diff options
author | Cristian Adam <cristian.adam@gmail.com> | 2021-09-14 14:49:16 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2021-09-15 14:39:46 (GMT) |
commit | 3b9e04accb46127b837bc93e90d32060c63349ee (patch) | |
tree | 46f73e39d0a91b1b7b84d4c4f42f0f86acb64939 /Tests/RunCMake/PrecompileHeaders/PchLibObjLibExe.cmake | |
parent | c9a29ce55d7af9980e866a98a3c81b5f4edb89b0 (diff) | |
download | CMake-3b9e04accb46127b837bc93e90d32060c63349ee.zip CMake-3b9e04accb46127b837bc93e90d32060c63349ee.tar.gz CMake-3b9e04accb46127b837bc93e90d32060c63349ee.tar.bz2 |
PCH: MSVC: Restrict OBJECT library INTERFACE_LINK_LIBRARIES usage
The pch object file could cause problems when the reused pch is passed
through an OBJECT library, which would use INTERFACE_LINK_LIBRARIES to
link the pch object file.
Fixes: #22630
Diffstat (limited to 'Tests/RunCMake/PrecompileHeaders/PchLibObjLibExe.cmake')
-rw-r--r-- | Tests/RunCMake/PrecompileHeaders/PchLibObjLibExe.cmake | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Tests/RunCMake/PrecompileHeaders/PchLibObjLibExe.cmake b/Tests/RunCMake/PrecompileHeaders/PchLibObjLibExe.cmake new file mode 100644 index 0000000..b4fdb71 --- /dev/null +++ b/Tests/RunCMake/PrecompileHeaders/PchLibObjLibExe.cmake @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.16) +project(PchLibObjLibExe CXX) + +foreach(i 1 2 3) + file(WRITE ${CMAKE_BINARY_DIR}/empty${i}.cpp "void nothing${i}() {}\n") +endforeach() + +add_library(base_lib_static STATIC ${CMAKE_BINARY_DIR}/empty1.cpp) +target_precompile_headers(base_lib_static PRIVATE <vector>) + +add_library(object_lib OBJECT ${CMAKE_BINARY_DIR}/empty2.cpp) +target_precompile_headers(object_lib REUSE_FROM base_lib_static) + +add_library(mid_lib_static STATIC ${CMAKE_BINARY_DIR}/empty3.cpp) +target_link_libraries(mid_lib_static PRIVATE object_lib) + +add_executable(exec main.cpp) +target_link_libraries(exec PRIVATE mid_lib_static) +set_target_properties(exec PROPERTIES MSVC_RUNTIME_LIBRARY MultiThreaded$<$<CONFIG:Debug>:Debug>) + +target_precompile_headers(exec PRIVATE <string>) + +enable_testing() +add_test(NAME exec COMMAND exec) |