浏览代码

added tests for var args with macros

Ken Martin 21 年之前
父节点
当前提交
c63c23a617

+ 13 - 0
Tests/Complex/CMakeLists.txt

@@ -16,6 +16,19 @@ ENDMACRO(ASSERT)
 # invoke the macro
 ASSERT(Complex_BINARY_DIR "The PROJECT command is broken")
 
+#
+# Define a var args macro, it must take two or four args
+#
+MACRO(TEST_ARGC value1 value2)
+  ADD_DEFINITIONS(${value1} ${value2})
+  IF (${ARGC} MATCHES 4)
+    ADD_DEFINITIONS(${ARGV2} ${ARGV3})
+  ENDIF (${ARGC} MATCHES 4)
+ENDMACRO(TEST_ARGC)
+ 
+# invoke the macro
+TEST_ARGC(-DCMAKE_ARGV1 -DCMAKE_ARGV2 -DCMAKE_ARGV3 -DCMAKE_ARGV4)
+
 #
 # Use the ansi CXX compile flag for building cmake
 #

+ 6 - 0
Tests/Complex/Executable/complex.cxx

@@ -194,6 +194,12 @@ int main()
   cmPassed("CMAKE_IS_FUN is defined.");
 #endif
   
+#if defined(CMAKE_ARGV1) && defined(CMAKE_ARGV2) && defined(CMAKE_ARGV3) && defined(CMAKE_ARGV4) 
+  cmPassed("Variable args for MACROs are working.");
+#else
+  cmFailed("Variable args for MACROs are failing.");
+#endif
+
   // ----------------------------------------------------------------------
   // Test SET, VARIABLE_REQUIRES
 

+ 13 - 0
Tests/ComplexOneConfig/CMakeLists.txt

@@ -16,6 +16,19 @@ ENDMACRO(ASSERT)
 # invoke the macro
 ASSERT(Complex_BINARY_DIR "The PROJECT command is broken")
 
+#
+# Define a var args macro, it must take two or four args
+#
+MACRO(TEST_ARGC value1 value2)
+  ADD_DEFINITIONS(${value1} ${value2})
+  IF (${ARGC} MATCHES 4)
+    ADD_DEFINITIONS(${ARGV2} ${ARGV3})
+  ENDIF (${ARGC} MATCHES 4)
+ENDMACRO(TEST_ARGC)
+ 
+# invoke the macro
+TEST_ARGC(-DCMAKE_ARGV1 -DCMAKE_ARGV2 -DCMAKE_ARGV3 -DCMAKE_ARGV4)
+
 #
 # Use the ansi CXX compile flag for building cmake
 #

+ 6 - 0
Tests/ComplexOneConfig/Executable/complex.cxx

@@ -194,6 +194,12 @@ int main()
   cmPassed("CMAKE_IS_FUN is defined.");
 #endif
   
+#if defined(CMAKE_ARGV1) && defined(CMAKE_ARGV2) && defined(CMAKE_ARGV3) && defined(CMAKE_ARGV4) 
+  cmPassed("Variable args for MACROs are working.");
+#else
+  cmFailed("Variable args for MACROs are failing.");
+#endif
+
   // ----------------------------------------------------------------------
   // Test SET, VARIABLE_REQUIRES
 

+ 13 - 0
Tests/ComplexRelativePaths/CMakeLists.txt

@@ -16,6 +16,19 @@ ENDMACRO(ASSERT)
 # invoke the macro
 ASSERT(Complex_BINARY_DIR "The PROJECT command is broken")
 
+#
+# Define a var args macro, it must take two or four args
+#
+MACRO(TEST_ARGC value1 value2)
+  ADD_DEFINITIONS(${value1} ${value2})
+  IF (${ARGC} MATCHES 4)
+    ADD_DEFINITIONS(${ARGV2} ${ARGV3})
+  ENDIF (${ARGC} MATCHES 4)
+ENDMACRO(TEST_ARGC)
+ 
+# invoke the macro
+TEST_ARGC(-DCMAKE_ARGV1 -DCMAKE_ARGV2 -DCMAKE_ARGV3 -DCMAKE_ARGV4)
+
 #
 # Use the ansi CXX compile flag for building cmake
 #

+ 6 - 0
Tests/ComplexRelativePaths/Executable/complex.cxx

@@ -194,6 +194,12 @@ int main()
   cmPassed("CMAKE_IS_FUN is defined.");
 #endif
   
+#if defined(CMAKE_ARGV1) && defined(CMAKE_ARGV2) && defined(CMAKE_ARGV3) && defined(CMAKE_ARGV4) 
+  cmPassed("Variable args for MACROs are working.");
+#else
+  cmFailed("Variable args for MACROs are failing.");
+#endif
+
   // ----------------------------------------------------------------------
   // Test SET, VARIABLE_REQUIRES