diff options
-rw-r--r-- | Source/cmLocalNinjaGenerator.cxx | 6 | ||||
-rw-r--r-- | Tests/RunCMake/NinjaMultiConfig/LongCommandLine.cmake | 16 | ||||
-rw-r--r-- | Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake | 5 |
3 files changed, 27 insertions, 0 deletions
diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 8ed411a..a1b350d 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -651,6 +651,12 @@ void cmLocalNinjaGenerator::WriteCustomCommandBuildStatement( gg->WriteBuild(this->GetImplFileStream(fileConfig), build); } else { std::string customStep = cmSystemTools::GetFilenameName(ninjaOutputs[0]); + if (this->GlobalGenerator->IsMultiConfig()) { + customStep += '-'; + customStep += fileConfig; + customStep += '-'; + customStep += ccg.GetOutputConfig(); + } // Hash full path to make unique. customStep += '-'; cmCryptoHash hash(cmCryptoHash::AlgoSHA256); diff --git a/Tests/RunCMake/NinjaMultiConfig/LongCommandLine.cmake b/Tests/RunCMake/NinjaMultiConfig/LongCommandLine.cmake new file mode 100644 index 0000000..00aa896 --- /dev/null +++ b/Tests/RunCMake/NinjaMultiConfig/LongCommandLine.cmake @@ -0,0 +1,16 @@ +enable_language(C) + +add_executable(generator main.c) + +string(REPEAT "." 5000 very_long) + +add_custom_command( + OUTPUT gen.txt + COMMAND generator "${very_long}" > gen.txt + ) + +add_custom_target( + custom + ALL + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/gen.txt" + ) diff --git a/Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake b/Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake index 21c2658..0d4db52 100644 --- a/Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake +++ b/Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake @@ -193,9 +193,14 @@ run_cmake_build(SimpleCrossConfigs all-relwithdebinfo-in-release-graph Release a set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/PostBuild-build) set(RunCMake_TEST_OPTIONS "-DCMAKE_CROSS_CONFIGS=all") run_cmake_configure(PostBuild) +unset(RunCMake_TEST_OPTIONS) run_cmake_build(PostBuild release Release Exe) run_cmake_build(PostBuild debug-in-release-graph Release Exe:Debug) +set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/LongCommandLine-build) +run_cmake_configure(LongCommandLine) +run_cmake_build(LongCommandLine release Release custom) + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Framework-build) set(RunCMake_TEST_OPTIONS "-DCMAKE_CROSS_CONFIGS=all") run_cmake_configure(Framework) |