Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Robert Maynard
CMake
Commits
e01935ac
Commit
e01935ac
authored
Nov 11, 2019
by
Cristian Adam
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PCH: No repeated path for internal generated PCH files
Fixes: #19952
parent
adf863f1
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
17 additions
and
34 deletions
+17
-34
Source/cmGeneratorTarget.cxx
Source/cmGeneratorTarget.cxx
+2
-8
Source/cmLocalGenerator.cxx
Source/cmLocalGenerator.cxx
+8
-0
Tests/RunCMake/PrecompileHeaders/DisabledPch-check.cmake
Tests/RunCMake/PrecompileHeaders/DisabledPch-check.cmake
+2
-7
Tests/RunCMake/PrecompileHeaders/PchInterface-check.cmake
Tests/RunCMake/PrecompileHeaders/PchInterface-check.cmake
+2
-7
Tests/RunCMake/PrecompileHeaders/PchMultilanguage-check.cmake
...s/RunCMake/PrecompileHeaders/PchMultilanguage-check.cmake
+2
-7
Tests/RunCMake/PrecompileHeaders/PchPrologueEpilogue-check.cmake
...unCMake/PrecompileHeaders/PchPrologueEpilogue-check.cmake
+1
-5
No files found.
Source/cmGeneratorTarget.cxx
View file @
e01935ac
...
...
@@ -3360,14 +3360,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"
},
...
...
Source/cmLocalGenerator.cxx
View file @
e01935ac
...
...
@@ -3123,6 +3123,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.
...
...
Tests/RunCMake/PrecompileHeaders/DisabledPch-check.cmake
View file @
e01935ac
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"
)
...
...
Tests/RunCMake/PrecompileHeaders/PchInterface-check.cmake
View file @
e01935ac
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"
)
...
...
Tests/RunCMake/PrecompileHeaders/PchMultilanguage-check.cmake
View file @
e01935ac
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"
)
...
...
Tests/RunCMake/PrecompileHeaders/PchPrologueEpilogue-check.cmake
View file @
e01935ac
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
}
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment