浏览代码

ENH: Testing new target properties RUNTIME_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_DIRECTORY, and ARCHIVE_OUTPUT_DIRECTORY. This is an incremental fix for bug#2240 and bug#4210.

Brad King 18 年之前
父节点
当前提交
cf7eeab37a

+ 3 - 7
Tests/Complex/CMakeLists.txt

@@ -137,13 +137,9 @@ SET(FORCE_TEST 0 CACHE STRING "a test" FORCE)
 #
 # Lib and exe path
 #
-SET (LIBRARY_OUTPUT_PATH 
-     ${Complex_BINARY_DIR}/bin/ CACHE INTERNAL
-     "Single output directory for building all libraries.")
-
-SET (EXECUTABLE_OUTPUT_PATH 
-     ${Complex_BINARY_DIR}/bin/ CACHE INTERNAL
-     "Single output directory for building all executables.")
+SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${Complex_BINARY_DIR}/lib/static")
+SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${Complex_BINARY_DIR}/lib")
+SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${Complex_BINARY_DIR}/bin")
 
 MESSAGE (Test " " escape " " semi-colon " " \; \;)
 #

+ 7 - 2
Tests/Complex/Executable/complex.cxx

@@ -320,12 +320,17 @@ extern "C" int NameConflictTest2();
 int main()
 {
   std::string lib = BINARY_DIR;
-  lib += "/bin/";
+  lib += "/lib/";
 #ifdef  CMAKE_INTDIR
   lib += CMAKE_INTDIR;
   lib += "/";
 #endif
-  std::string exe = lib;
+  std::string exe = BINARY_DIR;
+  exe += "/bin/";
+#ifdef  CMAKE_INTDIR
+  exe += CMAKE_INTDIR;
+  exe += "/";
+#endif
 
 #ifdef COMPLEX_TEST_CMAKELIB  
   // Test a single character executable to test a: in makefiles

+ 1 - 0
Tests/Complex/Library/CMakeLists.txt

@@ -7,6 +7,7 @@ REMOVE_DEFINITIONS(-DCMAKE_IS_REALLY_FUN)
 #
 UTILITY_SOURCE(CREATE_FILE_EXE create_file "." create_file.cxx)
 ADD_EXECUTABLE(create_file create_file.cxx)
+SET_TARGET_PROPERTIES(create_file PROPERTIES RUNTIME_OUTPUT_DIRECTORY ".")
 
 #
 # Create static library

+ 3 - 7
Tests/ComplexOneConfig/CMakeLists.txt

@@ -137,13 +137,9 @@ SET(FORCE_TEST 0 CACHE STRING "a test" FORCE)
 #
 # Lib and exe path
 #
-SET (LIBRARY_OUTPUT_PATH 
-     ${Complex_BINARY_DIR}/bin/ CACHE INTERNAL
-     "Single output directory for building all libraries.")
-
-SET (EXECUTABLE_OUTPUT_PATH 
-     ${Complex_BINARY_DIR}/bin/ CACHE INTERNAL
-     "Single output directory for building all executables.")
+SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${Complex_BINARY_DIR}/lib/static")
+SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${Complex_BINARY_DIR}/lib")
+SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${Complex_BINARY_DIR}/bin")
 
 MESSAGE (Test " " escape " " semi-colon " " \; \;)
 #

+ 7 - 2
Tests/ComplexOneConfig/Executable/complex.cxx

@@ -320,12 +320,17 @@ extern "C" int NameConflictTest2();
 int main()
 {
   std::string lib = BINARY_DIR;
-  lib += "/bin/";
+  lib += "/lib/";
 #ifdef  CMAKE_INTDIR
   lib += CMAKE_INTDIR;
   lib += "/";
 #endif
-  std::string exe = lib;
+  std::string exe = BINARY_DIR;
+  exe += "/bin/";
+#ifdef  CMAKE_INTDIR
+  exe += CMAKE_INTDIR;
+  exe += "/";
+#endif
 
 #ifdef COMPLEX_TEST_CMAKELIB  
   // Test a single character executable to test a: in makefiles

+ 1 - 0
Tests/ComplexOneConfig/Library/CMakeLists.txt

@@ -7,6 +7,7 @@ REMOVE_DEFINITIONS(-DCMAKE_IS_REALLY_FUN)
 #
 UTILITY_SOURCE(CREATE_FILE_EXE create_file "." create_file.cxx)
 ADD_EXECUTABLE(create_file create_file.cxx)
+SET_TARGET_PROPERTIES(create_file PROPERTIES RUNTIME_OUTPUT_DIRECTORY ".")
 
 #
 # Create static library

+ 3 - 7
Tests/ComplexRelativePaths/CMakeLists.txt

@@ -137,13 +137,9 @@ SET(FORCE_TEST 0 CACHE STRING "a test" FORCE)
 #
 # Lib and exe path
 #
-SET (LIBRARY_OUTPUT_PATH 
-     ${Complex_BINARY_DIR}/bin/ CACHE INTERNAL
-     "Single output directory for building all libraries.")
-
-SET (EXECUTABLE_OUTPUT_PATH 
-     ${Complex_BINARY_DIR}/bin/ CACHE INTERNAL
-     "Single output directory for building all executables.")
+SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${Complex_BINARY_DIR}/lib/static")
+SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${Complex_BINARY_DIR}/lib")
+SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${Complex_BINARY_DIR}/bin")
 
 MESSAGE (Test " " escape " " semi-colon " " \; \;)
 #

+ 7 - 2
Tests/ComplexRelativePaths/Executable/complex.cxx

@@ -320,12 +320,17 @@ extern "C" int NameConflictTest2();
 int main()
 {
   std::string lib = BINARY_DIR;
-  lib += "/bin/";
+  lib += "/lib/";
 #ifdef  CMAKE_INTDIR
   lib += CMAKE_INTDIR;
   lib += "/";
 #endif
-  std::string exe = lib;
+  std::string exe = BINARY_DIR;
+  exe += "/bin/";
+#ifdef  CMAKE_INTDIR
+  exe += CMAKE_INTDIR;
+  exe += "/";
+#endif
 
 #ifdef COMPLEX_TEST_CMAKELIB  
   // Test a single character executable to test a: in makefiles

+ 1 - 0
Tests/ComplexRelativePaths/Library/CMakeLists.txt

@@ -7,6 +7,7 @@ REMOVE_DEFINITIONS(-DCMAKE_IS_REALLY_FUN)
 #
 UTILITY_SOURCE(CREATE_FILE_EXE create_file "." create_file.cxx)
 ADD_EXECUTABLE(create_file create_file.cxx)
+SET_TARGET_PROPERTIES(create_file PROPERTIES RUNTIME_OUTPUT_DIRECTORY ".")
 
 #
 # Create static library

+ 6 - 3
Tests/SimpleInstall/CMakeLists.txt

@@ -1,8 +1,11 @@
 PROJECT (TestSimpleInstall)
 SET(CMAKE_VERBOSE_MAKEFILE 1)
-#SET(EXECUTABLE_OUTPUT_PATH "${TestSimpleInstall_BINARY_DIR}/This is exec path")
-SET(EXECUTABLE_OUTPUT_PATH "${TestSimpleInstall_BINARY_DIR}/ExecPath")
-SET(LIBRARY_OUTPUT_PATH "${EXECUTABLE_OUTPUT_PATH}")
+SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY
+  "${TestSimpleInstall_BINARY_DIR}/bin dir")
+SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
+  "${TestSimpleInstall_BINARY_DIR}/lib static")
+SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY
+  "${TestSimpleInstall_BINARY_DIR}/lib dir")
 
 # Skip generating the rpath pointing at the build tree to make sure
 # the executable is installed with the proper rpath in the install

+ 6 - 3
Tests/SimpleInstallS2/CMakeLists.txt

@@ -1,8 +1,11 @@
 PROJECT (TestSimpleInstall)
 SET(CMAKE_VERBOSE_MAKEFILE 1)
-#SET(EXECUTABLE_OUTPUT_PATH "${TestSimpleInstall_BINARY_DIR}/This is exec path")
-SET(EXECUTABLE_OUTPUT_PATH "${TestSimpleInstall_BINARY_DIR}/ExecPath")
-SET(LIBRARY_OUTPUT_PATH "${EXECUTABLE_OUTPUT_PATH}")
+SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY
+  "${TestSimpleInstall_BINARY_DIR}/bin dir")
+SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
+  "${TestSimpleInstall_BINARY_DIR}/lib static")
+SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY
+  "${TestSimpleInstall_BINARY_DIR}/lib dir")
 
 # Skip generating the rpath pointing at the build tree to make sure
 # the executable is installed with the proper rpath in the install