VarTests.cmake 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. #
  2. # Test SET
  3. #
  4. set (ZERO_VAR 0)
  5. set (ZERO_VAR_AND_INDENTED 0)
  6. set (ZERO_VAR2 0)
  7. if(ZERO_VAR)
  8. add_definitions(-DSHOULD_NOT_BE_DEFINED)
  9. else()
  10. add_definitions(-DSHOULD_BE_DEFINED)
  11. endif()
  12. set(ONE_VAR 1)
  13. set(ONE_VAR_AND_INDENTED 1)
  14. set(ONE_VAR2 1)
  15. set(STRING_VAR "CMake is great" CACHE STRING "test a cache variable")
  16. #
  17. # Test VARIABLE_REQUIRES
  18. #
  19. variable_requires(ONE_VAR
  20. ONE_VAR_IS_DEFINED ONE_VAR)
  21. #
  22. # Test various IF/ELSE combinations
  23. #
  24. if(NOT ZERO_VAR)
  25. add_definitions(-DSHOULD_BE_DEFINED_NOT)
  26. else()
  27. add_definitions(-DSHOULD_NOT_BE_DEFINED_NOT)
  28. endif()
  29. if(NOT ONE_VAR)
  30. add_definitions(-DSHOULD_NOT_BE_DEFINED_NOT2)
  31. else()
  32. add_definitions(-DSHOULD_BE_DEFINED_NOT2)
  33. endif()
  34. if(ONE_VAR AND ONE_VAR2)
  35. add_definitions(-DSHOULD_BE_DEFINED_AND)
  36. else()
  37. add_definitions(-DSHOULD_NOT_BE_DEFINED_AND)
  38. endif()
  39. if(ONE_VAR AND ZERO_VAR)
  40. add_definitions(-DSHOULD_NOT_BE_DEFINED_AND2)
  41. else()
  42. add_definitions(-DSHOULD_BE_DEFINED_AND2)
  43. endif()
  44. if(ZERO_VAR OR ONE_VAR2)
  45. add_definitions(-DSHOULD_BE_DEFINED_OR)
  46. else()
  47. add_definitions(-DSHOULD_NOT_BE_DEFINED_OR)
  48. endif()
  49. if(ZERO_VAR OR ZERO_VAR2)
  50. add_definitions(-DSHOULD_NOT_BE_DEFINED_OR2)
  51. else()
  52. add_definitions(-DSHOULD_BE_DEFINED_OR2)
  53. endif()
  54. if(STRING_VAR MATCHES "^CMake")
  55. add_definitions(-DSHOULD_BE_DEFINED_MATCHES)
  56. else()
  57. add_definitions(-DSHOULD_NOT_BE_DEFINED_MATCHES)
  58. endif()
  59. if(STRING_VAR MATCHES "^foo")
  60. add_definitions(-DSHOULD_NOT_BE_DEFINED_MATCHES2)
  61. else()
  62. add_definitions(-DSHOULD_BE_DEFINED_MATCHES2)
  63. endif()
  64. if(COMMAND "IF")
  65. add_definitions(-DSHOULD_BE_DEFINED_COMMAND)
  66. else()
  67. add_definitions(-DSHOULD_NOT_BE_DEFINED_COMMAND)
  68. endif()
  69. if(COMMAND "ROQUEFORT")
  70. add_definitions(-DSHOULD_NOT_BE_DEFINED_COMMAND2)
  71. else()
  72. add_definitions(-DSHOULD_BE_DEFINED_COMMAND2)
  73. endif()
  74. if (EXISTS ${Complex_SOURCE_DIR}/VarTests.cmake)
  75. add_definitions(-DSHOULD_BE_DEFINED_EXISTS)
  76. else()
  77. add_definitions(-DSHOULD_NOT_BE_DEFINED_EXISTS)
  78. endif ()
  79. if (EXISTS ${Complex_SOURCE_DIR}/roquefort.txt)
  80. add_definitions(-DSHOULD_NOT_BE_DEFINED_EXISTS2)
  81. else()
  82. add_definitions(-DSHOULD_BE_DEFINED_EXISTS2)
  83. endif ()
  84. if (IS_DIRECTORY ${Complex_SOURCE_DIR})
  85. add_definitions(-DSHOULD_BE_DEFINED_IS_DIRECTORY)
  86. endif ()
  87. if (NOT IS_DIRECTORY ${Complex_SOURCE_DIR}/VarTests.cmake)
  88. add_definitions(-DSHOULD_BE_DEFINED_IS_DIRECTORY2)
  89. endif ()
  90. set (SNUM1_VAR "1")
  91. set (SNUM2_VAR "2")
  92. set (SNUM3_VAR "1")
  93. if (SNUM1_VAR LESS SNUM2_VAR)
  94. add_definitions(-DSHOULD_BE_DEFINED_LESS)
  95. else ()
  96. add_definitions(-DSHOULD_NOT_BE_DEFINED_LESS)
  97. endif ()
  98. if (SNUM2_VAR LESS SNUM1_VAR)
  99. add_definitions(-DSHOULD_NOT_BE_DEFINED_LESS2)
  100. else ()
  101. add_definitions(-DSHOULD_BE_DEFINED_LESS2)
  102. endif ()
  103. if (SNUM2_VAR GREATER SNUM1_VAR)
  104. add_definitions(-DSHOULD_BE_DEFINED_GREATER)
  105. else ()
  106. add_definitions(-DSHOULD_NOT_BE_DEFINED_GREATER)
  107. endif ()
  108. if (SNUM1_VAR GREATER SNUM2_VAR)
  109. add_definitions(-DSHOULD_NOT_BE_DEFINED_GREATER2)
  110. else ()
  111. add_definitions(-DSHOULD_BE_DEFINED_GREATER2)
  112. endif ()
  113. if (SNUM2_VAR EQUAL SNUM1_VAR)
  114. add_definitions(-DSHOULD_NOT_BE_DEFINED_EQUAL)
  115. else ()
  116. add_definitions(-DSHOULD_BE_DEFINED_EQUAL)
  117. endif ()
  118. if (SNUM3_VAR EQUAL SNUM1_VAR)
  119. add_definitions(-DSHOULD_BE_DEFINED_EQUAL)
  120. else ()
  121. add_definitions(-DSHOULD_NOT_BE_DEFINED_EQUAL)
  122. endif ()
  123. if (SNUM1_VAR LESS_EQUAL SNUM2_VAR)
  124. add_definitions(-DSHOULD_BE_DEFINED_LESS_EQUAL)
  125. else ()
  126. add_definitions(-DSHOULD_NOT_BE_DEFINED_LESS_EQUAL)
  127. endif ()
  128. if (SNUM2_VAR LESS_EQUAL SNUM1_VAR)
  129. add_definitions(-DSHOULD_NOT_BE_DEFINED_LESS_EQUAL2)
  130. else ()
  131. add_definitions(-DSHOULD_BE_DEFINED_LESS_EQUAL2)
  132. endif ()
  133. if (SNUM1_VAR LESS_EQUAL SNUM3_VAR)
  134. add_definitions(-DSHOULD_BE_DEFINED_LESS_EQUAL3)
  135. else ()
  136. add_definitions(-DSHOULD_NOT_BE_DEFINED_LESS_EQUAL3)
  137. endif ()
  138. if (SNUM2_VAR GREATER_EQUAL SNUM1_VAR)
  139. add_definitions(-DSHOULD_BE_DEFINED_GREATER_EQUAL)
  140. else ()
  141. add_definitions(-DSHOULD_NOT_BE_DEFINED_GREATER_EQUAL)
  142. endif ()
  143. if (SNUM1_VAR GREATER_EQUAL SNUM2_VAR)
  144. add_definitions(-DSHOULD_NOT_BE_DEFINED_GREATER_EQUAL2)
  145. else ()
  146. add_definitions(-DSHOULD_BE_DEFINED_GREATER_EQUAL2)
  147. endif ()
  148. if (SNUM1_VAR GREATER_EQUAL SNUM3_VAR)
  149. add_definitions(-DSHOULD_BE_DEFINED_GREATER_EQUAL3)
  150. else ()
  151. add_definitions(-DSHOULD_NOT_BE_DEFINED_GREATER_EQUAL3)
  152. endif ()
  153. set (SSTR1_VAR "abc")
  154. set (SSTR2_VAR "bcd")
  155. if (SSTR1_VAR STRLESS SSTR2_VAR)
  156. add_definitions(-DSHOULD_BE_DEFINED_STRLESS)
  157. else ()
  158. add_definitions(-DSHOULD_NOT_BE_DEFINED_STRLESS)
  159. endif ()
  160. if (SSTR2_VAR STRLESS SSTR1_VAR)
  161. add_definitions(-DSHOULD_NOT_BE_DEFINED_STRLESS2)
  162. else ()
  163. add_definitions(-DSHOULD_BE_DEFINED_STRLESS2)
  164. endif ()
  165. if (SSTR2_VAR STRGREATER SSTR1_VAR)
  166. add_definitions(-DSHOULD_BE_DEFINED_STRGREATER)
  167. else ()
  168. add_definitions(-DSHOULD_NOT_BE_DEFINED_STRGREATER)
  169. endif ()
  170. if (SSTR1_VAR STRGREATER SSTR2_VAR)
  171. add_definitions(-DSHOULD_NOT_BE_DEFINED_STRGREATER2)
  172. else ()
  173. add_definitions(-DSHOULD_BE_DEFINED_STRGREATER2)
  174. endif ()
  175. if (SSTR1_VAR STRLESS_EQUAL SSTR2_VAR)
  176. add_definitions(-DSHOULD_BE_DEFINED_STRLESS_EQUAL)
  177. else ()
  178. add_definitions(-DSHOULD_NOT_BE_DEFINED_STRLESS_EQUAL)
  179. endif ()
  180. if (SSTR2_VAR STRLESS_EQUAL SSTR1_VAR)
  181. add_definitions(-DSHOULD_NOT_BE_DEFINED_STRLESS_EQUAL2)
  182. else ()
  183. add_definitions(-DSHOULD_BE_DEFINED_STRLESS_EQUAL2)
  184. endif ()
  185. if (SSTR1_VAR STRLESS_EQUAL SSTR1_VAR)
  186. add_definitions(-DSHOULD_BE_DEFINED_STRLESS_EQUAL3)
  187. else ()
  188. add_definitions(-DSHOULD_NOT_BE_DEFINED_STRLESS_EQUAL3)
  189. endif ()
  190. if (SSTR2_VAR STRGREATER_EQUAL SSTR1_VAR)
  191. add_definitions(-DSHOULD_BE_DEFINED_STRGREATER_EQUAL)
  192. else ()
  193. add_definitions(-DSHOULD_NOT_BE_DEFINED_STRGREATER_EQUAL)
  194. endif ()
  195. if (SSTR1_VAR STRGREATER_EQUAL SSTR2_VAR)
  196. add_definitions(-DSHOULD_NOT_BE_DEFINED_STRGREATER_EQUAL2)
  197. else ()
  198. add_definitions(-DSHOULD_BE_DEFINED_STRGREATER_EQUAL2)
  199. endif ()
  200. if (SSTR1_VAR STRGREATER_EQUAL SSTR1_VAR)
  201. add_definitions(-DSHOULD_BE_DEFINED_STRGREATER_EQUAL3)
  202. else ()
  203. add_definitions(-DSHOULD_NOT_BE_DEFINED_STRGREATER_EQUAL3)
  204. endif ()
  205. #
  206. # Test FOREACH
  207. #
  208. foreach (INDEX 1 2)
  209. set(FOREACH_VAR${INDEX} "VALUE${INDEX}")
  210. endforeach()
  211. set(FOREACH_CONCAT "")
  212. foreach (INDEX a;b;c;d;e;f;g)
  213. string(APPEND FOREACH_CONCAT "${INDEX}")
  214. endforeach()