Sfoglia il codice sorgente

Merge topic 'cmake-script-mode-directory-vars'

8bb908b1 Document and test CMAKE_[CURRENT_](BINARY|SOURCE)_DIR in script mode
Brad King 10 anni fa
parent
commit
45e9f48f9c

+ 5 - 0
Help/variable/CMAKE_BINARY_DIR.rst

@@ -6,3 +6,8 @@ The path to the top level of the build tree.
 This is the full path to the top level of the current CMake build
 tree.  For an in-source build, this would be the same as
 :variable:`CMAKE_SOURCE_DIR`.
+
+When run in -P script mode, CMake sets the variables
+:variable:`CMAKE_BINARY_DIR`, :variable:`CMAKE_SOURCE_DIR`,
+:variable:`CMAKE_CURRENT_BINARY_DIR` and
+:variable:`CMAKE_CURRENT_SOURCE_DIR` to the current working directory.

+ 5 - 0
Help/variable/CMAKE_CURRENT_BINARY_DIR.rst

@@ -8,3 +8,8 @@ processed by cmake.  Each directory added by :command:`add_subdirectory` will
 create a binary directory in the build tree, and as it is being
 processed this variable will be set.  For in-source builds this is the
 current source directory being processed.
+
+When run in -P script mode, CMake sets the variables
+:variable:`CMAKE_BINARY_DIR`, :variable:`CMAKE_SOURCE_DIR`,
+:variable:`CMAKE_CURRENT_BINARY_DIR` and
+:variable:`CMAKE_CURRENT_SOURCE_DIR` to the current working directory.

+ 5 - 0
Help/variable/CMAKE_CURRENT_SOURCE_DIR.rst

@@ -5,3 +5,8 @@ The path to the source directory currently being processed.
 
 This the full path to the source directory that is currently being
 processed by cmake.
+
+When run in -P script mode, CMake sets the variables
+:variable:`CMAKE_BINARY_DIR`, :variable:`CMAKE_SOURCE_DIR`,
+:variable:`CMAKE_CURRENT_BINARY_DIR` and
+:variable:`CMAKE_CURRENT_SOURCE_DIR` to the current working directory.

+ 5 - 0
Help/variable/CMAKE_SOURCE_DIR.rst

@@ -6,3 +6,8 @@ The path to the top level of the source tree.
 This is the full path to the top level of the current CMake source
 tree.  For an in-source build, this would be the same as
 :variable:`CMAKE_BINARY_DIR`.
+
+When run in -P script mode, CMake sets the variables
+:variable:`CMAKE_BINARY_DIR`, :variable:`CMAKE_SOURCE_DIR`,
+:variable:`CMAKE_CURRENT_BINARY_DIR` and
+:variable:`CMAKE_CURRENT_SOURCE_DIR` to the current working directory.

+ 14 - 0
Tests/RunCMake/CommandLine/P_working-dir.cmake

@@ -0,0 +1,14 @@
+if(NOT IS_DIRECTORY "${EXPECTED_WORKING_DIR}")
+  message(FATAL_ERROR "EXPECTED_WORKING_DIR is not a directory: ${EXPECTED_WORKING_DIR}")
+endif()
+
+foreach(d CMAKE_BINARY_DIR CMAKE_CURRENT_BINARY_DIR CMAKE_SOURCE_DIR CMAKE_CURRENT_SOURCE_DIR)
+  if(NOT DEFINED ${d})
+    message(FATAL_ERROR "${d} is not defined")
+  endif()
+  if(EXPECTED_WORKING_DIR STREQUAL "${${d}}")
+    message(STATUS "${d} is the expected working directory (${EXPECTED_WORKING_DIR})")
+  else()
+    message(FATAL_ERROR "${d} = \"${${d}}\" is not the expected working directory (${EXPECTED_WORKING_DIR})")
+  endif()
+endforeach()

+ 1 - 0
Tests/RunCMake/CommandLine/RunCMakeTest.cmake

@@ -115,6 +115,7 @@ run_cmake_command(E_sleep-bad-arg2 ${CMAKE_COMMAND} -E sleep 1 -1)
 run_cmake_command(E_sleep-one-tenth ${CMAKE_COMMAND} -E sleep 0.1)
 
 run_cmake_command(P_directory ${CMAKE_COMMAND} -P ${RunCMake_SOURCE_DIR})
+run_cmake_command(P_working-dir ${CMAKE_COMMAND} -DEXPECTED_WORKING_DIR=${RunCMake_BINARY_DIR}/P_working-dir-build -P ${RunCMake_SOURCE_DIR}/P_working-dir.cmake)
 
 set(RunCMake_TEST_OPTIONS
   "-DFOO=-DBAR:BOOL=BAZ")