diff options
author | Brad King <brad.king@kitware.com> | 2014-07-09 17:11:38 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-07-14 13:09:32 (GMT) |
commit | affe9d56a2e17683dc87c457c27cad7f39b0ad56 (patch) | |
tree | 47df80de0c25aa6e4d7e79ee503100a52dcb32d1 /Tests/InterfaceLibrary | |
parent | 55d3e88fb7eb5cfdb58c5617133dfaf70d3b0547 (diff) | |
download | CMake-affe9d56a2e17683dc87c457c27cad7f39b0ad56.zip CMake-affe9d56a2e17683dc87c457c27cad7f39b0ad56.tar.gz CMake-affe9d56a2e17683dc87c457c27cad7f39b0ad56.tar.bz2 |
Allow INTERFACE_SOURCES to specify $<TARGET_OBJECTS> (#14970)
Fix cmTarget::GetSourceFiles to set EvaluateForBuildsystem on the
$<TARGET_PROPERTY:...,INTERFACE_SOURCES> generator expression so that
the $<TARGET_OBJECTS> generator expression is allowed within an
INTERFACE_SOURCES value.
Extend the InterfaceLibrary test to cover this case. Extend the
RunCMake.TargetObjects test to cover failure of $<TARGET_OBJECTS>
when used through $<TARGET_PROPERTY:...,INTERFACE_SOURCES> in a
non-buildsystem context.
Diffstat (limited to 'Tests/InterfaceLibrary')
-rw-r--r-- | Tests/InterfaceLibrary/CMakeLists.txt | 6 | ||||
-rw-r--r-- | Tests/InterfaceLibrary/definetestexe.cpp | 3 | ||||
-rw-r--r-- | Tests/InterfaceLibrary/obj.cpp | 1 |
3 files changed, 8 insertions, 2 deletions
diff --git a/Tests/InterfaceLibrary/CMakeLists.txt b/Tests/InterfaceLibrary/CMakeLists.txt index d4f49c2..fe202dd 100644 --- a/Tests/InterfaceLibrary/CMakeLists.txt +++ b/Tests/InterfaceLibrary/CMakeLists.txt @@ -18,8 +18,12 @@ set_property(TARGET imp::iface APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SOMEPRO set_property(TARGET imp::iface PROPERTY INTERFACE_SOMEPROP OFF) set_property(TARGET imp::iface PROPERTY INTERFACE_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/does_not_exist.cpp) +add_library(objlib OBJECT obj.cpp) +add_library(iface_objlib INTERFACE) +target_sources(iface_objlib INTERFACE $<TARGET_OBJECTS:objlib>) + add_executable(InterfaceLibrary definetestexe.cpp) -target_link_libraries(InterfaceLibrary iface_nodepends headeriface subiface) +target_link_libraries(InterfaceLibrary iface_nodepends headeriface subiface iface_objlib) add_subdirectory(libsdir) diff --git a/Tests/InterfaceLibrary/definetestexe.cpp b/Tests/InterfaceLibrary/definetestexe.cpp index 30f2925..9044076 100644 --- a/Tests/InterfaceLibrary/definetestexe.cpp +++ b/Tests/InterfaceLibrary/definetestexe.cpp @@ -15,9 +15,10 @@ #error Expected IFACE_HEADER_BUILDDIR #endif +extern int obj(); extern int sub(); int main(int,char**) { - return sub(); + return obj() + sub(); } diff --git a/Tests/InterfaceLibrary/obj.cpp b/Tests/InterfaceLibrary/obj.cpp new file mode 100644 index 0000000..ee6f5fe --- /dev/null +++ b/Tests/InterfaceLibrary/obj.cpp @@ -0,0 +1 @@ +int obj() { return 0; } |