浏览代码

ENH: Added full pre-build/pre-link/post-build testing for both library and executable targets.

Brad King 20 年之前
父节点
当前提交
b40219372e

+ 16 - 0
Tests/Complex/Executable/CMakeLists.txt

@@ -27,6 +27,22 @@ ELSE(UNIX)
   ENDIF(NOT BORLAND)
 ENDIF (UNIX)
 
+# Test pre-build/pre-link/post-build rules for an executable.
+ADD_CUSTOM_COMMAND(TARGET complex PRE_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Executable/prebuild.txt")
+ADD_CUSTOM_COMMAND(TARGET complex PRE_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Executable/prelink.txt")
+ADD_CUSTOM_COMMAND(TARGET complex POST_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Executable/postbuild.txt")
+ADD_CUSTOM_COMMAND(TARGET complex POST_BUILD
+                   COMMAND ${CMAKE_COMMAND}
+                   ARGS -E copy
+                        "${Complex_BINARY_DIR}/Executable/postbuild.txt"
+                        "${Complex_BINARY_DIR}/Executable/postbuild2.txt")
+
 SET_SOURCE_FILES_PROPERTIES(complex
   COMPILE_FLAGS "-DFILE_HAS_EXTRA_COMPILE_FLAGS"
   OBJECT_DEPENDS ${Complex_BINARY_DIR}/cmTestGeneratedHeader.h

+ 11 - 3
Tests/Complex/Executable/complex.cxx

@@ -734,16 +734,24 @@ int main()
 #endif
 
   // ----------------------------------------------------------------------
-  // A post-build custom-command has been attached to the lib (see Library/).
-  // It runs ${CREATE_FILE_EXE} which will create a file.
-  // It also copies that file again using CCOMMAND.
+  // Some pre-build/pre-link/post-build custom-commands have been
+  // attached to the lib (see Library/).
+  // Each runs ${CREATE_FILE_EXE} which will create a file.
+  // It also copies that file again using cmake -E.
+  // Similar rules have been added to this executable.
   //
   // WARNING: if you run 'complex' manually, this *will* fail, because
   // the file was removed the last time 'complex' was run, and it is
   // only created during a build.
 
+  TestAndRemoveFile(BINARY_DIR "/Library/prebuild.txt");
+  TestAndRemoveFile(BINARY_DIR "/Library/prelink.txt");
   TestAndRemoveFile(BINARY_DIR "/Library/postbuild.txt");
   TestAndRemoveFile(BINARY_DIR "/Library/postbuild2.txt");
+  TestAndRemoveFile(BINARY_DIR "/Executable/prebuild.txt");
+  TestAndRemoveFile(BINARY_DIR "/Executable/prelink.txt");
+  TestAndRemoveFile(BINARY_DIR "/Executable/postbuild.txt");
+  TestAndRemoveFile(BINARY_DIR "/Executable/postbuild2.txt");
 
   // ----------------------------------------------------------------------
   // A custom target has been created (see Library/).

+ 14 - 9
Tests/Complex/Library/CMakeLists.txt

@@ -55,21 +55,26 @@ ENDIF(${FOO_BAR_VAR} MATCHES "BAR")
 
 
 #
-# Attach a post-build custom-command to the lib.
-# It runs ${CREATE_FILE_EXE} which will create a file.
+# Attach pre-build/pre-link/post-build custom-commands to the lib.
+# Each runs ${CREATE_FILE_EXE} which will create a file.
 # The 'complex' executable will then test if this file exists and remove it.
 #
 ADD_DEPENDENCIES(CMakeTestLibraryShared create_file)
 MESSAGE("complex bin dir is ${Complex_BINARY_DIR}")
-ADD_CUSTOM_COMMAND(COMMAND ${CREATE_FILE_EXE}
-                   ARGS "${Complex_BINARY_DIR}/Library/postbuild.txt"
-                   TARGET CMakeTestLibraryShared)
-
-ADD_CUSTOM_COMMAND(COMMAND ${CMAKE_COMMAND}
+ADD_CUSTOM_COMMAND(TARGET CMakeTestLibraryShared PRE_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Library/prebuild.txt")
+ADD_CUSTOM_COMMAND(TARGET CMakeTestLibraryShared PRE_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Library/prelink.txt")
+ADD_CUSTOM_COMMAND(TARGET CMakeTestLibraryShared POST_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Library/postbuild.txt")
+ADD_CUSTOM_COMMAND(TARGET CMakeTestLibraryShared POST_BUILD
+                   COMMAND ${CMAKE_COMMAND}
                    ARGS -E copy
                         "${Complex_BINARY_DIR}/Library/postbuild.txt"
-                        "${Complex_BINARY_DIR}/Library/postbuild2.txt"
-                   TARGET CMakeTestLibraryShared)
+                        "${Complex_BINARY_DIR}/Library/postbuild2.txt")
 
 #
 # Add a custom target.

+ 16 - 0
Tests/ComplexOneConfig/Executable/CMakeLists.txt

@@ -27,6 +27,22 @@ ELSE(UNIX)
   ENDIF(NOT BORLAND)
 ENDIF (UNIX)
 
+# Test pre-build/pre-link/post-build rules for an executable.
+ADD_CUSTOM_COMMAND(TARGET complex PRE_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Executable/prebuild.txt")
+ADD_CUSTOM_COMMAND(TARGET complex PRE_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Executable/prelink.txt")
+ADD_CUSTOM_COMMAND(TARGET complex POST_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Executable/postbuild.txt")
+ADD_CUSTOM_COMMAND(TARGET complex POST_BUILD
+                   COMMAND ${CMAKE_COMMAND}
+                   ARGS -E copy
+                        "${Complex_BINARY_DIR}/Executable/postbuild.txt"
+                        "${Complex_BINARY_DIR}/Executable/postbuild2.txt")
+
 SET_SOURCE_FILES_PROPERTIES(complex
   COMPILE_FLAGS "-DFILE_HAS_EXTRA_COMPILE_FLAGS"
   OBJECT_DEPENDS ${Complex_BINARY_DIR}/cmTestGeneratedHeader.h

+ 11 - 3
Tests/ComplexOneConfig/Executable/complex.cxx

@@ -734,16 +734,24 @@ int main()
 #endif
 
   // ----------------------------------------------------------------------
-  // A post-build custom-command has been attached to the lib (see Library/).
-  // It runs ${CREATE_FILE_EXE} which will create a file.
-  // It also copies that file again using CCOMMAND.
+  // Some pre-build/pre-link/post-build custom-commands have been
+  // attached to the lib (see Library/).
+  // Each runs ${CREATE_FILE_EXE} which will create a file.
+  // It also copies that file again using cmake -E.
+  // Similar rules have been added to this executable.
   //
   // WARNING: if you run 'complex' manually, this *will* fail, because
   // the file was removed the last time 'complex' was run, and it is
   // only created during a build.
 
+  TestAndRemoveFile(BINARY_DIR "/Library/prebuild.txt");
+  TestAndRemoveFile(BINARY_DIR "/Library/prelink.txt");
   TestAndRemoveFile(BINARY_DIR "/Library/postbuild.txt");
   TestAndRemoveFile(BINARY_DIR "/Library/postbuild2.txt");
+  TestAndRemoveFile(BINARY_DIR "/Executable/prebuild.txt");
+  TestAndRemoveFile(BINARY_DIR "/Executable/prelink.txt");
+  TestAndRemoveFile(BINARY_DIR "/Executable/postbuild.txt");
+  TestAndRemoveFile(BINARY_DIR "/Executable/postbuild2.txt");
 
   // ----------------------------------------------------------------------
   // A custom target has been created (see Library/).

+ 14 - 9
Tests/ComplexOneConfig/Library/CMakeLists.txt

@@ -55,21 +55,26 @@ ENDIF(${FOO_BAR_VAR} MATCHES "BAR")
 
 
 #
-# Attach a post-build custom-command to the lib.
-# It runs ${CREATE_FILE_EXE} which will create a file.
+# Attach pre-build/pre-link/post-build custom-commands to the lib.
+# Each runs ${CREATE_FILE_EXE} which will create a file.
 # The 'complex' executable will then test if this file exists and remove it.
 #
 ADD_DEPENDENCIES(CMakeTestLibraryShared create_file)
 MESSAGE("complex bin dir is ${Complex_BINARY_DIR}")
-ADD_CUSTOM_COMMAND(COMMAND ${CREATE_FILE_EXE}
-                   ARGS "${Complex_BINARY_DIR}/Library/postbuild.txt"
-                   TARGET CMakeTestLibraryShared)
-
-ADD_CUSTOM_COMMAND(COMMAND ${CMAKE_COMMAND}
+ADD_CUSTOM_COMMAND(TARGET CMakeTestLibraryShared PRE_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Library/prebuild.txt")
+ADD_CUSTOM_COMMAND(TARGET CMakeTestLibraryShared PRE_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Library/prelink.txt")
+ADD_CUSTOM_COMMAND(TARGET CMakeTestLibraryShared POST_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Library/postbuild.txt")
+ADD_CUSTOM_COMMAND(TARGET CMakeTestLibraryShared POST_BUILD
+                   COMMAND ${CMAKE_COMMAND}
                    ARGS -E copy
                         "${Complex_BINARY_DIR}/Library/postbuild.txt"
-                        "${Complex_BINARY_DIR}/Library/postbuild2.txt"
-                   TARGET CMakeTestLibraryShared)
+                        "${Complex_BINARY_DIR}/Library/postbuild2.txt")
 
 #
 # Add a custom target.

+ 16 - 0
Tests/ComplexRelativePaths/Executable/CMakeLists.txt

@@ -27,6 +27,22 @@ ELSE(UNIX)
   ENDIF(NOT BORLAND)
 ENDIF (UNIX)
 
+# Test pre-build/pre-link/post-build rules for an executable.
+ADD_CUSTOM_COMMAND(TARGET complex PRE_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Executable/prebuild.txt")
+ADD_CUSTOM_COMMAND(TARGET complex PRE_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Executable/prelink.txt")
+ADD_CUSTOM_COMMAND(TARGET complex POST_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Executable/postbuild.txt")
+ADD_CUSTOM_COMMAND(TARGET complex POST_BUILD
+                   COMMAND ${CMAKE_COMMAND}
+                   ARGS -E copy
+                        "${Complex_BINARY_DIR}/Executable/postbuild.txt"
+                        "${Complex_BINARY_DIR}/Executable/postbuild2.txt")
+
 SET_SOURCE_FILES_PROPERTIES(complex
   COMPILE_FLAGS "-DFILE_HAS_EXTRA_COMPILE_FLAGS"
   OBJECT_DEPENDS ${Complex_BINARY_DIR}/cmTestGeneratedHeader.h

+ 11 - 3
Tests/ComplexRelativePaths/Executable/complex.cxx

@@ -734,16 +734,24 @@ int main()
 #endif
 
   // ----------------------------------------------------------------------
-  // A post-build custom-command has been attached to the lib (see Library/).
-  // It runs ${CREATE_FILE_EXE} which will create a file.
-  // It also copies that file again using CCOMMAND.
+  // Some pre-build/pre-link/post-build custom-commands have been
+  // attached to the lib (see Library/).
+  // Each runs ${CREATE_FILE_EXE} which will create a file.
+  // It also copies that file again using cmake -E.
+  // Similar rules have been added to this executable.
   //
   // WARNING: if you run 'complex' manually, this *will* fail, because
   // the file was removed the last time 'complex' was run, and it is
   // only created during a build.
 
+  TestAndRemoveFile(BINARY_DIR "/Library/prebuild.txt");
+  TestAndRemoveFile(BINARY_DIR "/Library/prelink.txt");
   TestAndRemoveFile(BINARY_DIR "/Library/postbuild.txt");
   TestAndRemoveFile(BINARY_DIR "/Library/postbuild2.txt");
+  TestAndRemoveFile(BINARY_DIR "/Executable/prebuild.txt");
+  TestAndRemoveFile(BINARY_DIR "/Executable/prelink.txt");
+  TestAndRemoveFile(BINARY_DIR "/Executable/postbuild.txt");
+  TestAndRemoveFile(BINARY_DIR "/Executable/postbuild2.txt");
 
   // ----------------------------------------------------------------------
   // A custom target has been created (see Library/).

+ 14 - 9
Tests/ComplexRelativePaths/Library/CMakeLists.txt

@@ -55,21 +55,26 @@ ENDIF(${FOO_BAR_VAR} MATCHES "BAR")
 
 
 #
-# Attach a post-build custom-command to the lib.
-# It runs ${CREATE_FILE_EXE} which will create a file.
+# Attach pre-build/pre-link/post-build custom-commands to the lib.
+# Each runs ${CREATE_FILE_EXE} which will create a file.
 # The 'complex' executable will then test if this file exists and remove it.
 #
 ADD_DEPENDENCIES(CMakeTestLibraryShared create_file)
 MESSAGE("complex bin dir is ${Complex_BINARY_DIR}")
-ADD_CUSTOM_COMMAND(COMMAND ${CREATE_FILE_EXE}
-                   ARGS "${Complex_BINARY_DIR}/Library/postbuild.txt"
-                   TARGET CMakeTestLibraryShared)
-
-ADD_CUSTOM_COMMAND(COMMAND ${CMAKE_COMMAND}
+ADD_CUSTOM_COMMAND(TARGET CMakeTestLibraryShared PRE_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Library/prebuild.txt")
+ADD_CUSTOM_COMMAND(TARGET CMakeTestLibraryShared PRE_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Library/prelink.txt")
+ADD_CUSTOM_COMMAND(TARGET CMakeTestLibraryShared POST_BUILD
+                   COMMAND ${CREATE_FILE_EXE}
+                   ARGS "${Complex_BINARY_DIR}/Library/postbuild.txt")
+ADD_CUSTOM_COMMAND(TARGET CMakeTestLibraryShared POST_BUILD
+                   COMMAND ${CMAKE_COMMAND}
                    ARGS -E copy
                         "${Complex_BINARY_DIR}/Library/postbuild.txt"
-                        "${Complex_BINARY_DIR}/Library/postbuild2.txt"
-                   TARGET CMakeTestLibraryShared)
+                        "${Complex_BINARY_DIR}/Library/postbuild2.txt")
 
 #
 # Add a custom target.