mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-04 21:00:17 -06:00
Merge topic 'xcode-cc-work-dir'
36921d2d23 Xcode: Fix custom command work-dir placeholders in "new build system"
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5527
This commit is contained in:
@@ -1964,6 +1964,15 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateRunScriptBuildPhase(
|
||||
return buildPhase;
|
||||
}
|
||||
|
||||
namespace {
|
||||
void ReplaceScriptVars(std::string& cmd)
|
||||
{
|
||||
cmSystemTools::ReplaceString(cmd, "$(CONFIGURATION)", "$CONFIGURATION");
|
||||
cmSystemTools::ReplaceString(cmd, "$(EFFECTIVE_PLATFORM_NAME)",
|
||||
"$EFFECTIVE_PLATFORM_NAME");
|
||||
}
|
||||
}
|
||||
|
||||
std::string cmGlobalXCodeGenerator::ConstructScript(
|
||||
cmCustomCommandGenerator const& ccg)
|
||||
{
|
||||
@@ -1974,6 +1983,7 @@ std::string cmGlobalXCodeGenerator::ConstructScript(
|
||||
wd = lg->GetCurrentBinaryDirectory();
|
||||
}
|
||||
wd = lg->ConvertToOutputFormat(wd, cmOutputConverter::SHELL);
|
||||
ReplaceScriptVars(wd);
|
||||
script = cmStrCat(script, " cd ", wd, "\n");
|
||||
for (unsigned int c = 0; c < ccg.GetNumberOfCommands(); ++c) {
|
||||
std::string cmd = ccg.GetCommand(c);
|
||||
@@ -1983,9 +1993,7 @@ std::string cmGlobalXCodeGenerator::ConstructScript(
|
||||
cmSystemTools::ReplaceString(cmd, "/./", "/");
|
||||
cmd = lg->ConvertToOutputFormat(cmd, cmOutputConverter::SHELL);
|
||||
ccg.AppendArguments(c, cmd);
|
||||
cmSystemTools::ReplaceString(cmd, "$(CONFIGURATION)", "$CONFIGURATION");
|
||||
cmSystemTools::ReplaceString(cmd, "$(EFFECTIVE_PLATFORM_NAME)",
|
||||
"$EFFECTIVE_PLATFORM_NAME");
|
||||
ReplaceScriptVars(cmd);
|
||||
script = cmStrCat(script, " ", cmd, '\n');
|
||||
}
|
||||
return script;
|
||||
|
||||
1
Tests/RunCMake/add_custom_command/PrintDir.cmake
Normal file
1
Tests/RunCMake/add_custom_command/PrintDir.cmake
Normal file
@@ -0,0 +1 @@
|
||||
message(STATUS "WorkingDir='${CMAKE_CURRENT_BINARY_DIR}'")
|
||||
@@ -27,3 +27,18 @@ set(RunCMake_TEST_NO_CLEAN 1)
|
||||
run_cmake_command(AssigningMultipleTargets-build ${CMAKE_COMMAND} --build .)
|
||||
unset(RunCMake_TEST_BINARY_DIR)
|
||||
unset(RunCMake_TEST_NO_CLEAN)
|
||||
|
||||
if(NOT RunCMake_GENERATOR STREQUAL "Ninja Multi-Config")
|
||||
run_cmake(WorkingDirectory)
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/WorkingDirectory-build)
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
||||
set(RunCMake-stdout-file WorkingDirectory-build-multi-config-stdout.txt)
|
||||
else()
|
||||
set(RunCMake-stdout-file WorkingDirectory-build-single-config-stdout.txt)
|
||||
endif()
|
||||
run_cmake_command(WorkingDirectory-build ${CMAKE_COMMAND} --build . --config Debug)
|
||||
unset(RunCMake-stdout-file)
|
||||
unset(RunCMake_TEST_BINARY_DIR)
|
||||
unset(RunCMake_TEST_NO_CLEAN)
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
-- WorkingDir='[^']*/Tests/RunCMake/add_custom_command/WorkingDirectory-build/Debug'
|
||||
@@ -0,0 +1 @@
|
||||
-- WorkingDir='[^']*/Tests/RunCMake/add_custom_command/WorkingDirectory-build'
|
||||
9
Tests/RunCMake/add_custom_command/WorkingDirectory.cmake
Normal file
9
Tests/RunCMake/add_custom_command/WorkingDirectory.cmake
Normal file
@@ -0,0 +1,9 @@
|
||||
add_custom_target(mkdir COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>")
|
||||
add_custom_command(
|
||||
OUTPUT out.txt
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/PrintDir.cmake
|
||||
WORKING_DIRECTORY ${CMAKE_CFG_INTDIR}
|
||||
)
|
||||
set_property(SOURCE out.txt PROPERTY SYMBOLIC 1)
|
||||
add_custom_target(drive ALL DEPENDS out.txt)
|
||||
add_dependencies(drive mkdir)
|
||||
Reference in New Issue
Block a user