Merge topic 'link-libs-config-case'

2af18704fd Merge branch 'backport-3.16-link-libs-config-case'
3f976bf201 target_link_libraries: Fix regression in case of $<CONFIG> genex
5a95b5e091 target_link_libraries: Fix regression in case of $<CONFIG> genex

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4544
This commit is contained in:
Brad King
2020-03-31 13:19:34 +00:00
committed by Kitware Robot
5 changed files with 30 additions and 6 deletions

View File

@@ -2432,11 +2432,9 @@ void cmLocalGenerator::AddPchDependencies(cmGeneratorTarget* target)
}
for (std::string const& config : configsList) {
const std::string buildType = cmSystemTools::UpperCase(config);
// FIXME: Refactor collection of sources to not evaluate object libraries.
std::vector<cmSourceFile*> sources;
target->GetSourceFiles(sources, buildType);
target->GetSourceFiles(sources, config);
for (const std::string& lang : { "C", "CXX", "OBJC", "OBJCXX" }) {
auto langSources = std::count_if(
@@ -2605,15 +2603,13 @@ void cmLocalGenerator::AddUnityBuild(cmGeneratorTarget* target)
config = this->Makefile->GetSafeDefinition("CMAKE_BUILD_TYPE");
}
const std::string buildType = cmSystemTools::UpperCase(config);
std::string filename_base =
cmStrCat(this->GetCurrentBinaryDirectory(), "/CMakeFiles/",
target->GetName(), ".dir/Unity/");
// FIXME: Refactor collection of sources to not evaluate object libraries.
std::vector<cmSourceFile*> sources;
target->GetSourceFiles(sources, buildType);
target->GetSourceFiles(sources, config);
auto batchSizeString = target->GetProperty("UNITY_BUILD_BATCH_SIZE");
const size_t unityBatchSize =

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1,13 @@
^CMake Error at ConfigCase.cmake:[0-9]+ \(add_library\):
Target "impl" links to target "config::impl-Debug" but the target was not
found. Perhaps a find_package\(\) call is missing for an IMPORTED target, or
an ALIAS target is missing\?
Call Stack \(most recent call first\):
CMakeLists.txt:[0-9]+ \(include\)
+
CMake Error at ConfigCase.cmake:[0-9]+ \(add_library\):
Target "impl" links to target "config::iface-Debug" but the target was not
found. Perhaps a find_package\(\) call is missing for an IMPORTED target, or
an ALIAS target is missing\?
Call Stack \(most recent call first\):
CMakeLists.txt:[0-9]+ \(include\)

View File

@@ -0,0 +1,6 @@
cmake_policy(VERSION 3.15)
enable_language(C)
add_library(iface INTERFACE)
target_link_libraries(iface INTERFACE "config::iface-$<CONFIG>")
add_library(impl empty.c)
target_link_libraries(impl PRIVATE "config::impl-$<CONFIG>" iface)

View File

@@ -1,5 +1,13 @@
include(RunCMake)
if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
set(RunCMake_TEST_OPTIONS -DCMAKE_CONFIGURATION_TYPES=Debug)
else()
set(RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
endif()
run_cmake(ConfigCase)
unset(RunCMake_TEST_OPTIONS)
run_cmake(CMP0023-WARN)
run_cmake(CMP0023-NEW)
run_cmake(CMP0023-WARN-2)