mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-24 09:09:43 -05:00
Merge topic 'ninja-multi-output-path-prefix'
df38eaab2c Ninja Multi-Config: Write output path prefix
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8280
This commit is contained in:
@@ -571,6 +571,7 @@ void cmGlobalNinjaGenerator::Generate()
|
||||
msg.str());
|
||||
return;
|
||||
}
|
||||
this->InitOutputPathPrefix();
|
||||
if (!this->OpenBuildFileStreams()) {
|
||||
return;
|
||||
}
|
||||
@@ -582,7 +583,6 @@ void cmGlobalNinjaGenerator::Generate()
|
||||
it.second.TargetDependsClosureLocalOutputs.clear();
|
||||
}
|
||||
|
||||
this->InitOutputPathPrefix();
|
||||
this->TargetAll = this->NinjaOutputPath("all");
|
||||
this->CMakeCacheFile = this->NinjaOutputPath("CMakeCache.txt");
|
||||
this->DiagnosedCxxModuleNinjaSupport = false;
|
||||
@@ -2079,9 +2079,10 @@ void cmGlobalNinjaGenerator::WriteTargetClean(std::ostream& os)
|
||||
build.Outputs.front() = this->BuildAlias(
|
||||
this->NinjaOutputPath(this->GetCleanTargetName()), config);
|
||||
if (this->IsMultiConfig()) {
|
||||
build.Variables["TARGETS"] =
|
||||
cmStrCat(this->BuildAlias(GetByproductsForCleanTargetName(), config),
|
||||
" ", GetByproductsForCleanTargetName());
|
||||
build.Variables["TARGETS"] = cmStrCat(
|
||||
this->BuildAlias(
|
||||
this->NinjaOutputPath(GetByproductsForCleanTargetName()), config),
|
||||
" ", this->NinjaOutputPath(GetByproductsForCleanTargetName()));
|
||||
}
|
||||
build.ExplicitDeps.clear();
|
||||
if (additionalFiles) {
|
||||
@@ -2096,7 +2097,8 @@ void cmGlobalNinjaGenerator::WriteTargetClean(std::ostream& os)
|
||||
if (this->IsMultiConfig()) {
|
||||
build.Variables["FILE_ARG"] = cmStrCat(
|
||||
"-f ",
|
||||
cmGlobalNinjaMultiGenerator::GetNinjaImplFilename(fileConfig));
|
||||
this->NinjaOutputPath(
|
||||
cmGlobalNinjaMultiGenerator::GetNinjaImplFilename(fileConfig)));
|
||||
}
|
||||
this->WriteBuild(*this->GetImplFileStream(fileConfig), build);
|
||||
}
|
||||
@@ -2118,8 +2120,8 @@ void cmGlobalNinjaGenerator::WriteTargetClean(std::ostream& os)
|
||||
std::vector<std::string> byproducts;
|
||||
byproducts.reserve(this->CrossConfigs.size());
|
||||
for (auto const& config : this->CrossConfigs) {
|
||||
byproducts.push_back(
|
||||
this->BuildAlias(GetByproductsForCleanTargetName(), config));
|
||||
byproducts.push_back(this->BuildAlias(
|
||||
this->NinjaOutputPath(GetByproductsForCleanTargetName()), config));
|
||||
}
|
||||
byproducts.emplace_back(GetByproductsForCleanTargetName());
|
||||
build.Variables["TARGETS"] = cmJoin(byproducts, " ");
|
||||
@@ -2127,7 +2129,8 @@ void cmGlobalNinjaGenerator::WriteTargetClean(std::ostream& os)
|
||||
for (auto const& fileConfig : configs) {
|
||||
build.Variables["FILE_ARG"] = cmStrCat(
|
||||
"-f ",
|
||||
cmGlobalNinjaMultiGenerator::GetNinjaImplFilename(fileConfig));
|
||||
this->NinjaOutputPath(
|
||||
cmGlobalNinjaMultiGenerator::GetNinjaImplFilename(fileConfig)));
|
||||
this->WriteBuild(*this->GetImplFileStream(fileConfig), build);
|
||||
}
|
||||
}
|
||||
@@ -2910,7 +2913,8 @@ bool cmGlobalNinjaMultiGenerator::OpenBuildFileStreams()
|
||||
*this->DefaultFileStream << "# Build using rules for '"
|
||||
<< this->DefaultFileConfig << "'.\n\n"
|
||||
<< "include "
|
||||
<< GetNinjaImplFilename(this->DefaultFileConfig)
|
||||
<< this->NinjaOutputPath(
|
||||
GetNinjaImplFilename(this->DefaultFileConfig))
|
||||
<< "\n\n";
|
||||
|
||||
// Write a comment about this file.
|
||||
@@ -2943,7 +2947,8 @@ bool cmGlobalNinjaMultiGenerator::OpenBuildFileStreams()
|
||||
*this->ConfigFileStreams[config]
|
||||
<< "# This file contains aliases specific to the \"" << config
|
||||
<< "\"\n# configuration.\n\n"
|
||||
<< "include " << GetNinjaImplFilename(config) << "\n\n";
|
||||
<< "include " << this->NinjaOutputPath(GetNinjaImplFilename(config))
|
||||
<< "\n\n";
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
tgt has been built
|
||||
@@ -0,0 +1 @@
|
||||
add_custom_target(tgt ALL COMMAND ${CMAKE_COMMAND} -E echo "tgt has been built")
|
||||
@@ -459,6 +459,15 @@ set(RunCMake_TEST_OPTIONS "-DCMAKE_CONFIGURATION_TYPES=Debug\\;Release;-DCMAKE_C
|
||||
run_cmake(CompileCommands)
|
||||
unset(RunCMake_TEST_OPTIONS)
|
||||
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/OutputPathPrefix-build)
|
||||
run_cmake_with_options(OutputPathPrefix "-DCMAKE_NINJA_OUTPUT_PATH_PREFIX=OutputPathPrefix-build")
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR})
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
run_cmake_command(OutputPathPrefix-all-ninja "${RunCMake_MAKE_PROGRAM}" -f OutputPathPrefix-build/build.ninja OutputPathPrefix-build/all)
|
||||
run_cmake_command(OutputPathPrefix-clean-ninja "${RunCMake_MAKE_PROGRAM}" -f OutputPathPrefix-build/build.ninja OutputPathPrefix-build/clean)
|
||||
unset(RunCMake_TEST_NO_CLEAN)
|
||||
unset(RunCMake_TEST_BINARY_DIR)
|
||||
|
||||
# CudaSimple uses separable compilation, which is currently only supported on NVCC.
|
||||
if(CMake_TEST_CUDA)
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/CudaSimple-build)
|
||||
|
||||
Reference in New Issue
Block a user