diff options
author | Patrick Stotko <stotko@cs.uni-bonn.de> | 2018-05-11 16:06:53 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-05-15 14:22:35 (GMT) |
commit | c9349cc1b94a08b4f5ed86a397e72ceed50847dd (patch) | |
tree | d7df775c58c8f2c539e848abf7dc513a6f4d9a20 /Tests | |
parent | 743f24bac68010c0157dc0349958e09ed1784f5f (diff) | |
download | CMake-c9349cc1b94a08b4f5ed86a397e72ceed50847dd.zip CMake-c9349cc1b94a08b4f5ed86a397e72ceed50847dd.tar.gz CMake-c9349cc1b94a08b4f5ed86a397e72ceed50847dd.tar.bz2 |
target_link_libraries: Allow use with targets in other directories
Previously the command did not allow naming targets on the LHS that
were not created in the calling directory. Lift this restriction to
enable more flexible use by projects.
Fixes: #17943
Diffstat (limited to 'Tests')
15 files changed, 94 insertions, 7 deletions
diff --git a/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake b/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake index 97b0888..d61fa5f 100644 --- a/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake +++ b/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake @@ -8,7 +8,10 @@ run_cmake(ImportedTarget) run_cmake(ImportedTargetFailure) run_cmake(MixedSignature) run_cmake(Separate-PRIVATE-LINK_PRIVATE-uses) +run_cmake(SubDirImportedTarget) run_cmake(SubDirTarget) +run_cmake(SubDirTarget-UNKNOWN-IMPORTED) +run_cmake(SubDirTarget-UNKNOWN-IMPORTED-GLOBAL) run_cmake(SharedDepNotTarget) run_cmake(StaticPrivateDepNotExported) run_cmake(StaticPrivateDepNotTarget) diff --git a/Tests/RunCMake/target_link_libraries/SubDirImportedTarget-stdout.txt b/Tests/RunCMake/target_link_libraries/SubDirImportedTarget-stdout.txt new file mode 100644 index 0000000..a7ef260 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirImportedTarget-stdout.txt @@ -0,0 +1,4 @@ +-- mainexeUnknownImportedGlobal: mainlib;sublib +-- mainlibUnknownImportedGlobal: mainlib;sublib +-- subexeUnknownImportedGlobal: mainlib;sublib +-- sublibUnknownImportedGlobal: mainlib;sublib diff --git a/Tests/RunCMake/target_link_libraries/SubDirImportedTarget.cmake b/Tests/RunCMake/target_link_libraries/SubDirImportedTarget.cmake new file mode 100644 index 0000000..738280b --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirImportedTarget.cmake @@ -0,0 +1,17 @@ +enable_language(C) + +add_executable(mainexeUnknownImportedGlobal IMPORTED GLOBAL) +add_library(mainlibUnknownImportedGlobal UNKNOWN IMPORTED GLOBAL) +add_library(mainlib empty.c) + +add_subdirectory(SubDirImportedTarget) + +target_link_libraries(subexeUnknownImportedGlobal INTERFACE mainlib) +target_link_libraries(subexeUnknownImportedGlobal INTERFACE sublib) +get_property(subexeUnknownImportedGlobal_libs TARGET subexeUnknownImportedGlobal PROPERTY INTERFACE_LINK_LIBRARIES) +message(STATUS "subexeUnknownImportedGlobal: ${subexeUnknownImportedGlobal_libs}") + +target_link_libraries(sublibUnknownImportedGlobal INTERFACE mainlib) +target_link_libraries(sublibUnknownImportedGlobal INTERFACE sublib) +get_property(sublibUnknownImportedGlobal_libs TARGET sublibUnknownImportedGlobal PROPERTY INTERFACE_LINK_LIBRARIES) +message(STATUS "sublibUnknownImportedGlobal: ${sublibUnknownImportedGlobal_libs}") diff --git a/Tests/RunCMake/target_link_libraries/SubDirImportedTarget/CMakeLists.txt b/Tests/RunCMake/target_link_libraries/SubDirImportedTarget/CMakeLists.txt new file mode 100644 index 0000000..d67a01c --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirImportedTarget/CMakeLists.txt @@ -0,0 +1,13 @@ +add_executable(subexeUnknownImportedGlobal IMPORTED GLOBAL) +add_library(sublibUnknownImportedGlobal UNKNOWN IMPORTED GLOBAL) +add_library(sublib ../empty.c) + +target_link_libraries(mainexeUnknownImportedGlobal INTERFACE mainlib) +target_link_libraries(mainexeUnknownImportedGlobal INTERFACE sublib) +get_property(mainexeUnknownImportedGlobal_libs TARGET mainexeUnknownImportedGlobal PROPERTY INTERFACE_LINK_LIBRARIES) +message(STATUS "mainexeUnknownImportedGlobal: ${mainexeUnknownImportedGlobal_libs}") + +target_link_libraries(mainlibUnknownImportedGlobal INTERFACE mainlib) +target_link_libraries(mainlibUnknownImportedGlobal INTERFACE sublib) +get_property(mainlibUnknownImportedGlobal_libs TARGET mainlibUnknownImportedGlobal PROPERTY INTERFACE_LINK_LIBRARIES) +message(STATUS "mainlibUnknownImportedGlobal: ${mainlibUnknownImportedGlobal_libs}") diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL-stdout.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL-stdout.txt new file mode 100644 index 0000000..a8c77cb --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL-stdout.txt @@ -0,0 +1,2 @@ +-- mainexe: mainlibUnknownImportedGlobal;sublibUnknownImportedGlobal +-- subexe: mainlibUnknownImportedGlobal;sublibUnknownImportedGlobal diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL.cmake b/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL.cmake new file mode 100644 index 0000000..04d64e6 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL.cmake @@ -0,0 +1,11 @@ +enable_language(C) + +add_executable(mainexe empty.c) +add_library(mainlibUnknownImportedGlobal UNKNOWN IMPORTED GLOBAL) + +add_subdirectory(SubDirTarget-UNKNOWN-IMPORTED-GLOBAL) + +target_link_libraries(subexe mainlibUnknownImportedGlobal) +target_link_libraries(subexe sublibUnknownImportedGlobal) +get_property(subexe_libs TARGET subexe PROPERTY INTERFACE_LINK_LIBRARIES) +message(STATUS "subexe: ${subexe_libs}") diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL/CMakeLists.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL/CMakeLists.txt new file mode 100644 index 0000000..6c0c8b2 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL/CMakeLists.txt @@ -0,0 +1,7 @@ +add_executable(subexe ../empty.c) +add_library(sublibUnknownImportedGlobal UNKNOWN IMPORTED GLOBAL) + +target_link_libraries(mainexe mainlibUnknownImportedGlobal) +target_link_libraries(mainexe sublibUnknownImportedGlobal) +get_property(mainexe_libs TARGET mainexe PROPERTY INTERFACE_LINK_LIBRARIES) +message(STATUS "mainexe: ${mainexe_libs}") diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-stdout.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-stdout.txt new file mode 100644 index 0000000..4980dc9 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-stdout.txt @@ -0,0 +1,2 @@ +-- mainexe: mainlibUnknownImported;sublibUnknownImported +-- subexe: mainlibUnknownImported;sublibUnknownImported diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED.cmake b/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED.cmake new file mode 100644 index 0000000..e476a3f --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED.cmake @@ -0,0 +1,11 @@ +enable_language(C) + +add_executable(mainexe empty.c) +add_library(mainlibUnknownImported UNKNOWN IMPORTED) + +add_subdirectory(SubDirTarget-UNKNOWN-IMPORTED) + +target_link_libraries(subexe mainlibUnknownImported) +target_link_libraries(subexe sublibUnknownImported) +get_property(subexe_libs TARGET subexe PROPERTY INTERFACE_LINK_LIBRARIES) +message(STATUS "subexe: ${subexe_libs}") diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED/CMakeLists.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED/CMakeLists.txt new file mode 100644 index 0000000..4a40a68 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED/CMakeLists.txt @@ -0,0 +1,7 @@ +add_executable(subexe ../empty.c) +add_library(sublibUnknownImported UNKNOWN IMPORTED) + +target_link_libraries(mainexe mainlibUnknownImported) +target_link_libraries(mainexe sublibUnknownImported) +get_property(mainexe_libs TARGET mainexe PROPERTY INTERFACE_LINK_LIBRARIES) +message(STATUS "mainexe: ${mainexe_libs}") diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget-result.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt deleted file mode 100644 index 5cd1f23..0000000 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt +++ /dev/null @@ -1,5 +0,0 @@ -^CMake Error at SubDirTarget.cmake:[0-9]+ \(target_link_libraries\): - Attempt to add link library "m" to target "subexe" which is not built in - this directory. -Call Stack \(most recent call first\): - CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget-stdout.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget-stdout.txt new file mode 100644 index 0000000..646f984 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget-stdout.txt @@ -0,0 +1,2 @@ +-- mainexe: mainlib;sublib +-- subexe: mainlib;sublib diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget.cmake b/Tests/RunCMake/target_link_libraries/SubDirTarget.cmake index 32431ce..55c658d 100644 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget.cmake +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget.cmake @@ -1,3 +1,11 @@ enable_language(C) + +add_executable(mainexe empty.c) +add_library(mainlib empty.c) + add_subdirectory(SubDirTarget) -target_link_libraries(subexe m) + +target_link_libraries(subexe mainlib) +target_link_libraries(subexe sublib) +get_property(subexe_libs TARGET subexe PROPERTY INTERFACE_LINK_LIBRARIES) +message(STATUS "subexe: ${subexe_libs}") diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt index b0b2380..3d956a8 100644 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt @@ -1 +1,7 @@ add_executable(subexe ../empty.c) +add_library(sublib ../empty.c) + +target_link_libraries(mainexe mainlib) +target_link_libraries(mainexe sublib) +get_property(mainexe_libs TARGET mainexe PROPERTY INTERFACE_LINK_LIBRARIES) +message(STATUS "mainexe: ${mainexe_libs}") |