소스 검색

cmake: Convert no source/build dir error to warning

Temporarily restore previous behavior that allowed specifying
no source or build directory to work, even though it was
neither documented nor supported. This commit is expected
to eventually be reverted to restore the fatal error for such
cases.

Relates: #18817
Craig Scott 6 년 전
부모
커밋
68b51fb19a
4개의 변경된 파일20개의 추가작업 그리고 5개의 파일을 삭제
  1. 5 2
      Source/cmake.cxx
  2. 11 1
      Tests/RunCMake/CommandLine/RunCMakeTest.cmake
  3. 0 1
      Tests/RunCMake/CommandLine/no-S-B-result.txt
  4. 4 1
      Tests/RunCMake/CommandLine/no-S-B-stderr.txt

+ 5 - 2
Source/cmake.cxx

@@ -810,8 +810,11 @@ void cmake::SetArgs(const std::vector<std::string>& args)
 
   if (this->CurrentWorkingMode == cmake::NORMAL_MODE && !haveSourceDir &&
       !haveBinaryDir) {
-    cmSystemTools::Error("No source or binary directory provided");
-    return;
+    this->IssueMessage(
+      MessageType::WARNING,
+      "No source or binary directory provided. Both will be assumed to be "
+      "the same as the current working directory, but note that this "
+      "warning will become a fatal error in future CMake releases.");
   }
 
   if (!haveSourceDir) {

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

@@ -56,12 +56,22 @@ run_cmake_command(cache-empty-entry
   ${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}/cache-empty-entry/)
 
 function(run_ExplicitDirs)
+  set(source_dir ${RunCMake_BINARY_DIR}/ExplicitDirsMissing)
+
+  file(REMOVE_RECURSE "${source_dir}")
+  file(MAKE_DIRECTORY "${source_dir}")
+  file(WRITE ${source_dir}/CMakeLists.txt [=[
+cmake_minimum_required(VERSION 3.13)
+project(ExplicitDirsMissing LANGUAGES NONE)
+]=])
+  run_cmake_command(no-S-B ${CMAKE_COMMAND} -E chdir ${source_dir}
+    ${CMAKE_COMMAND} -DFOO=BAR)
+
   set(source_dir ${RunCMake_SOURCE_DIR}/ExplicitDirs)
   set(binary_dir ${RunCMake_BINARY_DIR}/ExplicitDirs-build)
 
   file(REMOVE_RECURSE "${binary_dir}")
   file(MAKE_DIRECTORY "${binary_dir}")
-  run_cmake_command(no-S-B ${CMAKE_COMMAND} -DFOO=BAR)
   run_cmake_command(S-arg ${CMAKE_COMMAND} -S ${source_dir} ${binary_dir})
   run_cmake_command(S-arg-reverse-order ${CMAKE_COMMAND} ${binary_dir} -S${source_dir} )
   run_cmake_command(S-no-arg ${CMAKE_COMMAND} -S )

+ 0 - 1
Tests/RunCMake/CommandLine/no-S-B-result.txt

@@ -1 +0,0 @@
-1

+ 4 - 1
Tests/RunCMake/CommandLine/no-S-B-stderr.txt

@@ -1 +1,4 @@
-CMake Error: No source or binary directory provided
+CMake Warning:
+  No source or binary directory provided.  Both will be assumed to be the
+  same as the current working directory, but note that this warning will
+  become a fatal error in future CMake releases.