diff options
author | Brad King <brad.king@kitware.com> | 2021-09-16 12:15:11 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2021-09-16 12:15:31 (GMT) |
commit | 86d0d78f2e6d39d22878b2a15f66ec854ed06848 (patch) | |
tree | db275e813728a153a730dd6cd95f62d1571a1b54 | |
parent | 038c416f93bb53a8d2a353474d7c41cea773a30b (diff) | |
parent | 3b9e04accb46127b837bc93e90d32060c63349ee (diff) | |
download | CMake-86d0d78f2e6d39d22878b2a15f66ec854ed06848.zip CMake-86d0d78f2e6d39d22878b2a15f66ec854ed06848.tar.gz CMake-86d0d78f2e6d39d22878b2a15f66ec854ed06848.tar.bz2 |
Merge topic 'msvc-pch-obj-restriction'
3b9e04accb PCH: MSVC: Restrict OBJECT library INTERFACE_LINK_LIBRARIES usage
Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !6518
-rw-r--r-- | Source/cmLocalGenerator.cxx | 3 | ||||
-rw-r--r-- | Tests/RunCMake/PrecompileHeaders/PchLibObjLibExe.cmake | 24 | ||||
-rw-r--r-- | Tests/RunCMake/PrecompileHeaders/RunCMakeTest.cmake | 1 |
3 files changed, 27 insertions, 1 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 8be015e..5042874 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -2654,7 +2654,8 @@ void cmLocalGenerator::AddPchDependencies(cmGeneratorTarget* target) cmStrCat(" ", this->ConvertToOutputFormat(pchSourceObj, SHELL)), true); - } else { + } else if (reuseTarget->GetType() == + cmStateEnums::OBJECT_LIBRARY) { target->Target->AppendProperty( "INTERFACE_LINK_LIBRARIES", cmStrCat("$<$<CONFIG:", config, 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) diff --git a/Tests/RunCMake/PrecompileHeaders/RunCMakeTest.cmake b/Tests/RunCMake/PrecompileHeaders/RunCMakeTest.cmake index e723e03..ca5b52e 100644 --- a/Tests/RunCMake/PrecompileHeaders/RunCMakeTest.cmake +++ b/Tests/RunCMake/PrecompileHeaders/RunCMakeTest.cmake @@ -29,3 +29,4 @@ if(RunCMake_GENERATOR MATCHES "Make|Ninja") endif() run_test(PchReuseFromObjLib) run_test(PchIncludedAllLanguages) +run_test(PchLibObjLibExe) |