mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 13:20:47 -06:00
Merge topic 'pch-no-duplicates'
e01935ac9d PCH: No repeated path for internal generated PCH files
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4030
This commit is contained in:
@@ -3376,14 +3376,8 @@ std::string cmGeneratorTarget::GetPchHeader(const std::string& config,
|
||||
this->GetGlobalGenerator()->FindGeneratorTarget(pchReuseFrom);
|
||||
}
|
||||
|
||||
if (this->GetGlobalGenerator()->IsMultiConfig()) {
|
||||
filename = cmStrCat(
|
||||
generatorTarget->LocalGenerator->GetCurrentBinaryDirectory(), "/");
|
||||
} else {
|
||||
// For GCC we need to have the header file .h[xx]
|
||||
// next to the .h[xx].gch file
|
||||
filename = generatorTarget->ObjectDirectory;
|
||||
}
|
||||
filename = cmStrCat(
|
||||
generatorTarget->LocalGenerator->GetCurrentBinaryDirectory(), "/");
|
||||
|
||||
const std::map<std::string, std::string> languageToExtension = {
|
||||
{ "C", ".h" },
|
||||
|
||||
@@ -3122,6 +3122,14 @@ std::string cmLocalGenerator::GetObjectFileNameWithoutTarget(
|
||||
const char* pchExtension = source.GetProperty("PCH_EXTENSION");
|
||||
if (pchExtension) {
|
||||
customOutputExtension = pchExtension;
|
||||
|
||||
// Make sure that for the CMakeFiles/<target>.dir/cmake_pch.h|xx.c|xx
|
||||
// source file, we don't end up having
|
||||
// CMakeFiles/<target>.dir/CMakeFiles/<target>.dir/cmake_pch.h|xx.pch
|
||||
cmsys::RegularExpression var("(CMakeFiles/[^/]+.dir/)");
|
||||
while (var.find(objectName)) {
|
||||
objectName.erase(var.start(), var.end() - var.start());
|
||||
}
|
||||
}
|
||||
|
||||
// Remove the source extension if it is to be replaced.
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
if (NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
||||
set(foo_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foo.dir/CMakeFiles/foo.dir/cmake_pch.h")
|
||||
set(foobar_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foobar.dir/CMakeFiles/foobar.dir/cmake_pch.h")
|
||||
else()
|
||||
set(foo_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foo.dir/cmake_pch.h")
|
||||
set(foobar_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foobar.dir/cmake_pch.h")
|
||||
endif()
|
||||
set(foo_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foo.dir/cmake_pch.h")
|
||||
set(foobar_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foobar.dir/cmake_pch.h")
|
||||
|
||||
if (NOT EXISTS ${foo_pch_header})
|
||||
set(RunCMake_TEST_FAILED "Generated foo pch header ${foo_pch_header} does not exist")
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
if (NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
||||
set(foo_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foo.dir/CMakeFiles/foo.dir/cmake_pch.h")
|
||||
set(foobar_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foobar.dir/CMakeFiles/foobar.dir/cmake_pch.h")
|
||||
else()
|
||||
set(foo_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foo.dir/cmake_pch.h")
|
||||
set(foobar_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foobar.dir/cmake_pch.h")
|
||||
endif()
|
||||
set(foo_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foo.dir/cmake_pch.h")
|
||||
set(foobar_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foobar.dir/cmake_pch.h")
|
||||
|
||||
if (NOT EXISTS ${foo_pch_header})
|
||||
set(RunCMake_TEST_FAILED "Generated foo pch header ${foo_pch_header} does not exist")
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
if (NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
||||
set(foobar_pch_h_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foobar.dir/CMakeFiles/foobar.dir/cmake_pch.h")
|
||||
set(foobar_pch_hxx_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foobar.dir/CMakeFiles/foobar.dir/cmake_pch.hxx")
|
||||
else()
|
||||
set(foobar_pch_h_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foobar.dir/cmake_pch.h")
|
||||
set(foobar_pch_hxx_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foobar.dir/cmake_pch.hxx")
|
||||
endif()
|
||||
set(foobar_pch_h_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foobar.dir/cmake_pch.h")
|
||||
set(foobar_pch_hxx_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/foobar.dir/cmake_pch.hxx")
|
||||
|
||||
if (NOT EXISTS ${foobar_pch_h_header})
|
||||
set(RunCMake_TEST_FAILED "Generated foobar C pch header ${foobar_pch_h_header} does not exist")
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
if (NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
||||
set(main_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/main.dir/CMakeFiles/main.dir/cmake_pch.hxx")
|
||||
else()
|
||||
set(main_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/main.dir/cmake_pch.hxx")
|
||||
endif()
|
||||
set(main_pch_header "${RunCMake_TEST_BINARY_DIR}/CMakeFiles/main.dir/cmake_pch.hxx")
|
||||
|
||||
file(STRINGS ${main_pch_header} main_pch_header_strings)
|
||||
string(REGEX MATCH "#pragma warning\\(push, 0\\).*#include.*pch.h.*#pragma warning\\(pop\\)" matched_code ${main_pch_header_strings})
|
||||
|
||||
Reference in New Issue
Block a user