소스 검색

Merge topic 'cmake-build-specify-makefile-name'

cfce067b3f Tests: Add RunCMake.Make case for conflicting Makefile names
378c047ae3 Makefiles: Explicitly tell 'make' tool what Makefile name to use

Acked-by: Kitware Robot <[email protected]>
Merge-request: !5509
Brad King 5 년 전
부모
커밋
c0619861c9
3개의 변경된 파일18개의 추가작업 그리고 0개의 파일을 삭제
  1. 5 0
      Source/cmGlobalUnixMakefileGenerator3.cxx
  2. 5 0
      Tests/RunCMake/Make/MakefileConflict.cmake
  3. 8 0
      Tests/RunCMake/Make/RunCMakeTest.cmake

+ 5 - 0
Source/cmGlobalUnixMakefileGenerator3.cxx

@@ -589,6 +589,11 @@ cmGlobalUnixMakefileGenerator3::GenerateBuildCommand(
   }
   makeCommand.Add(this->SelectMakeProgram(makeProgram));
 
+  // Explicitly tell the make tool to use the Makefile written by
+  // cmLocalUnixMakefileGenerator3::WriteLocalMakefile
+  makeCommand.Add("-f");
+  makeCommand.Add("Makefile");
+
   if (jobs != cmake::NO_BUILD_PARALLEL_LEVEL) {
     if (jobs == cmake::DEFAULT_BUILD_PARALLEL_LEVEL) {
       makeCommand.Add("-j");

+ 5 - 0
Tests/RunCMake/Make/MakefileConflict.cmake

@@ -0,0 +1,5 @@
+add_custom_target(Custom)
+
+# Write a file that GNU make will prefer over "Makefile"
+# if 'cmake --build' does not explicitly specify it.
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/GNUmakefile" "")

+ 8 - 0
Tests/RunCMake/Make/RunCMakeTest.cmake

@@ -42,6 +42,14 @@ run_VerboseBuild()
 run_cmake(CustomCommandDepfile-ERROR)
 run_cmake(IncludeRegexSubdir)
 
+function(run_MakefileConflict)
+  run_cmake(MakefileConflict)
+  set(RunCMake_TEST_NO_CLEAN 1)
+  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/MakefileConflict-build)
+  run_cmake_command(MakefileConflict-build ${CMAKE_COMMAND} --build . --target Custom)
+endfunction()
+run_MakefileConflict()
+
 function(run_CMP0113 val)
   set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/CMP0113-${val}-build)
   run_cmake(CMP0113-${val})