mirror of
https://github.com/reactos/CMake.git
synced 2024-11-24 20:19:53 +00:00
PCH: Document and test COMPILE_LANGUAGE genex for per-language header
Fixes: #19839
This commit is contained in:
parent
9150c818b7
commit
ac75886525
@ -47,6 +47,9 @@ with the syntax ``$<...>``.
|
||||
See the :manual:`cmake-generator-expressions(7)` manual for available
|
||||
expressions. See the :manual:`cmake-compile-features(7)` manual for
|
||||
information on compile features and a list of supported compilers.
|
||||
The ``$<COMPILE_LANGUAGE:...>`` generator expression is particularly
|
||||
useful for specifying a language-specific header to precompile for
|
||||
only one language (e.g. ``CXX`` and not ``C``).
|
||||
|
||||
Usage
|
||||
^^^^^
|
||||
@ -56,6 +59,7 @@ Usage
|
||||
target_precompile_headers(<target>
|
||||
PUBLIC
|
||||
project_header.h
|
||||
"$<$<COMPILE_LANGUAGE:CXX>:cxx_only.h>"
|
||||
PRIVATE
|
||||
[["other_header.h"]]
|
||||
<unordered_map>
|
||||
|
@ -15,3 +15,17 @@ if (NOT EXISTS ${foobar_pch_hxx_header})
|
||||
set(RunCMake_TEST_FAILED "Generated foobar C++ pch header ${foobar_pch_hxx_header} does not exist")
|
||||
return()
|
||||
endif()
|
||||
|
||||
file(STRINGS ${foobar_pch_h_header} foobar_pch_h_header_strings)
|
||||
|
||||
if (NOT foobar_pch_h_header_strings MATCHES ";#include <stddef.h>(;|$)")
|
||||
set(RunCMake_TEST_FAILED "Generated foo pch header\n ${foobar_pch_h_header}\nhas bad content:\n ${foobar_pch_h_header_strings}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
file(STRINGS ${foobar_pch_hxx_header} foobar_pch_hxx_header_strings)
|
||||
|
||||
if (NOT foobar_pch_hxx_header_strings MATCHES ";#include <cstddef>(;|$)")
|
||||
set(RunCMake_TEST_FAILED "Generated foo pch header\n ${foobar_pch_hxx_header}\nhas bad content:\n ${foobar_pch_hxx_header_strings}")
|
||||
return()
|
||||
endif()
|
||||
|
@ -6,4 +6,7 @@ add_executable(foobar
|
||||
main.cpp
|
||||
)
|
||||
target_include_directories(foobar PUBLIC include)
|
||||
target_precompile_headers(foobar PRIVATE "<stddef.h>")
|
||||
target_precompile_headers(foobar PRIVATE
|
||||
"$<$<COMPILE_LANGUAGE:C>:<stddef.h$<ANGLE-R>>"
|
||||
"$<$<COMPILE_LANGUAGE:CXX>:<cstddef$<ANGLE-R>>"
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user