Merge topic 'IMPORTED-build-dependencies'

4f7ceb5 Test non-IMPORTED libraries in the INTERFACE of IMPORTED libraries.
3405351 Add entire link interface transitive closure as target depends.
This commit is contained in:
Brad King 2013-07-15 09:30:34 -04:00 committed by CMake Topic Stage
commit aa0b9fa311
7 changed files with 67 additions and 0 deletions

View File

@ -282,6 +282,8 @@ void cmComputeTargetDepends::AddInterfaceDepends(int depender_index,
if(emitted.insert(*lib).second)
{
this->AddTargetDepend(depender_index, lib->c_str(), true);
this->AddInterfaceDepends(depender_index, lib->c_str(),
true, emitted);
}
}
}

View File

@ -184,6 +184,9 @@ set_property(TARGET testSharedLibRequired APPEND PROPERTY
INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include/testSharedLibRequired>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}>"
)
set_property(TARGET testSharedLibRequired APPEND PROPERTY
INTERFACE_COMPILE_DEFINITIONS USING_TESTSHAREDLIBREQUIRED
)
set_property(TARGET testSharedLibRequired
APPEND PROPERTY
COMPATIBLE_INTERFACE_BOOL CUSTOM_PROP

View File

@ -218,3 +218,36 @@ target_compile_definitions(deps_shared_iface2
$<$<BOOL:$<TARGET_PROPERTY:CUSTOM_PROP>>:CUSTOM_PROPERTY_IS_ON>
$<$<STREQUAL:$<TARGET_PROPERTY:CUSTOM_STRING>,testcontent>:CUSTOM_STRING_IS_MATCH>
)
add_subdirectory(excludedFromAll)
add_executable(iface_test_bld iface_test.cpp)
target_link_libraries(iface_test_bld bld_testSharedLibDepends)
set_property(TARGET bld_testSharedLibRequired APPEND PROPERTY
LINK_INTERFACE_LIBRARIES
excludedFromAll
)
get_target_property(_configs bld_testSharedLibRequired IMPORTED_CONFIGURATIONS)
foreach(_config ${_configs})
set_property(TARGET bld_testSharedLibRequired APPEND PROPERTY
IMPORTED_LINK_INTERFACE_LIBRARIES_${_config}
excludedFromAll
)
endforeach()
unset(_configs)
add_executable(iface_test_exp iface_test.cpp)
target_link_libraries(iface_test_exp testSharedLibDepends)
set_property(TARGET testSharedLibDepends APPEND PROPERTY
LINK_INTERFACE_LIBRARIES
excludedFromAll
)
get_target_property(_configs testSharedLibDepends IMPORTED_CONFIGURATIONS)
foreach(_config ${_configs})
set_property(TARGET testSharedLibDepends APPEND PROPERTY
IMPORTED_LINK_INTERFACE_LIBRARIES_${_config}
excludedFromAll
)
endforeach()
unset(_configs)

View File

@ -0,0 +1,7 @@
set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
include(GenerateExportHeader)
add_library(excludedFromAll SHARED EXCLUDE_FROM_ALL excludedFromAll.cpp)
generate_export_header(excludedFromAll)

View File

@ -0,0 +1,7 @@
#include "excludedFromAll.h"
int excludedFromAll()
{
return 0;
}

View File

@ -0,0 +1,4 @@
#include "excludedfromall_export.h"
int EXCLUDEDFROMALL_EXPORT excludedFromAll();

View File

@ -0,0 +1,11 @@
#ifndef USING_TESTSHAREDLIBREQUIRED
#error Expected USING_TESTSHAREDLIBREQUIRED
#endif
#include "excludedFromAll.h"
int main(void)
{
return excludedFromAll();
}