mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-05 21:31:08 -06:00
Fix EXCLUDE_FROM_ALL on directory with an interface library
Since commit dc6888573d (Pass EXCLUDE_FROM_ALL from directory to
targets, 2019-01-15, v3.14.0-rc1~83^2) we automatically forward the
`EXCLUDE_FROM_ALL` to targets as they are created. This regressed
support for interface libraries on which the property is not allowed.
Skip forwarding the `EXCLUDE_FROM_ALL` property for interface libraries.
It is not needed on them because they do not participate in the
generated build system anyway.
Fixes: #18896
This commit is contained in:
@@ -1985,7 +1985,9 @@ cmTarget* cmMakefile::AddLibrary(const std::string& lname,
|
||||
// over changes in CMakeLists.txt, making the information stale and
|
||||
// hence useless.
|
||||
target->ClearDependencyInformation(*this);
|
||||
if (excludeFromAll || this->GetPropertyAsBool("EXCLUDE_FROM_ALL")) {
|
||||
if (excludeFromAll ||
|
||||
(type != cmStateEnums::INTERFACE_LIBRARY &&
|
||||
this->GetPropertyAsBool("EXCLUDE_FROM_ALL"))) {
|
||||
target->SetProperty("EXCLUDE_FROM_ALL", "TRUE");
|
||||
}
|
||||
target->AddSources(srcs);
|
||||
|
||||
@@ -47,6 +47,7 @@ target_link_libraries(InterfaceLibrary
|
||||
add_dependencies(InterfaceLibrary item_fake_tgt)
|
||||
|
||||
add_subdirectory(libsdir)
|
||||
add_subdirectory(excluded EXCLUDE_FROM_ALL)
|
||||
|
||||
add_executable(sharedlibtestexe sharedlibtestexe.cpp)
|
||||
target_link_libraries(sharedlibtestexe shared_iface imported::iface)
|
||||
|
||||
1
Tests/InterfaceLibrary/excluded/CMakeLists.txt
Normal file
1
Tests/InterfaceLibrary/excluded/CMakeLists.txt
Normal file
@@ -0,0 +1 @@
|
||||
add_library(excluded_iface INTERFACE)
|
||||
Reference in New Issue
Block a user