[cmake-developers] Testing Config generator expression

Brad King brad.king at kitware.com
Fri Nov 2 08:10:31 EDT 2012


On 11/02/2012 05:26 AM, Stephen Kelly wrote:
> Brad King wrote:
>> I think just this will be sufficient (untested):
> 
> I wasn't able to make that work. Also any solution based on using script 
> mode didn't work because I can't use add_custom_command there. 

It isn't script mode.  The patch below works for me.

-Brad


diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 077bbc4..c937906 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -556,6 +556,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=master -P ${CMake_SOURCE_DIR}/Utilities/
     --build-generator ${CMAKE_TEST_GENERATOR}
     --build-project GeneratorExpression
     --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
+    --build-options -DCMAKE_BUILD_TYPE=\${CTEST_CONFIGURATION_TYPE}
     )
   list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/GeneratorExpression")

diff --git a/Tests/GeneratorExpression/CMakeLists.txt b/Tests/GeneratorExpression/CMakeLists.txt
index 581d483..3a92d81 100644
--- a/Tests/GeneratorExpression/CMakeLists.txt
+++ b/Tests/GeneratorExpression/CMakeLists.txt
@@ -19,6 +19,10 @@ add_custom_target(check ALL
     -Dtest_and_0_invalidcontent=$<AND:0,invalidcontent>
     -Dtest_config_0=$<CONFIG:$<CONFIGURATION>x>
     -Dtest_config_1=$<CONFIG:$<CONFIGURATION>>
+    -Dtest_config_debug=$<CONFIG:Debug>$<CONFIG:DEBUG>$<CONFIG:DeBuG>
+    -Dtest_config_release=$<CONFIG:Release>$<CONFIG:RELEASE>$<CONFIG:ReLeAsE>
+    -Dtest_config_relwithdebinfo=$<CONFIG:RelWithDebInfo>$<CONFIG:RELWITHDEBINFO>$<CONFIG:relwithdebinfo>
+    -Dtest_config_minsizerel=$<CONFIG:MinSizeRel>$<CONFIG:MINSIZEREL>$<CONFIG:minsizerel>
     -Dtest_not_0=$<NOT:0>
     -Dtest_not_1=$<NOT:1>
     -Dtest_or_0=$<OR:0>
diff --git a/Tests/GeneratorExpression/check.cmake b/Tests/GeneratorExpression/check.cmake
index 88a60ce..af436de 100644
--- a/Tests/GeneratorExpression/check.cmake
+++ b/Tests/GeneratorExpression/check.cmake
@@ -18,6 +18,11 @@ check(test_and_1_1 "1")
 check(test_and_0_invalidcontent "0")
 check(test_config_0 "0")
 check(test_config_1 "1")
+foreach(c debug release relwithdebinfo minsizerel)
+  if(NOT "${test_config_${c}}" MATCHES "^(0+|1+)$")
+    message(SEND_ERROR "test_config_${c} is \"${test_config_${c}}\", not all 0 or all 1")
+  endif()
+endforeach()
 check(test_not_0 "1")
 check(test_not_1 "0")
 check(test_or_0 "0")



More information about the cmake-developers mailing list