From 0d7114987c78085df6449e93bdda8a1749862025 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 3 Jul 2018 09:37:29 -0400 Subject: Revert "target_link_libraries: Allow use with targets in other directories" Revert commit v3.12.0-rc1~82^2 (target_link_libraries: Allow use with targets in other directories, 2018-05-11). The RHS target scoping and visibility rules are not clear and will need further investigation before the feature can be added. Issue: #17943 --- Help/command/target_link_libraries.rst | 2 +- Help/release/3.12.rst | 3 --- Source/cmTargetLinkLibrariesCommand.cxx | 11 ++--------- Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake | 3 --- .../SubDirImportedTarget-stdout.txt | 4 ---- .../target_link_libraries/SubDirImportedTarget.cmake | 17 ----------------- .../SubDirImportedTarget/CMakeLists.txt | 13 ------------- .../SubDirTarget-UNKNOWN-IMPORTED-GLOBAL-stdout.txt | 2 -- .../SubDirTarget-UNKNOWN-IMPORTED-GLOBAL.cmake | 11 ----------- .../SubDirTarget-UNKNOWN-IMPORTED-GLOBAL/CMakeLists.txt | 7 ------- .../SubDirTarget-UNKNOWN-IMPORTED-stdout.txt | 2 -- .../SubDirTarget-UNKNOWN-IMPORTED.cmake | 11 ----------- .../SubDirTarget-UNKNOWN-IMPORTED/CMakeLists.txt | 7 ------- .../target_link_libraries/SubDirTarget-result.txt | 1 + .../target_link_libraries/SubDirTarget-stderr.txt | 5 +++++ .../target_link_libraries/SubDirTarget-stdout.txt | 2 -- Tests/RunCMake/target_link_libraries/SubDirTarget.cmake | 10 +--------- .../target_link_libraries/SubDirTarget/CMakeLists.txt | 6 ------ 18 files changed, 10 insertions(+), 107 deletions(-) delete mode 100644 Tests/RunCMake/target_link_libraries/SubDirImportedTarget-stdout.txt delete mode 100644 Tests/RunCMake/target_link_libraries/SubDirImportedTarget.cmake delete mode 100644 Tests/RunCMake/target_link_libraries/SubDirImportedTarget/CMakeLists.txt delete mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL-stdout.txt delete mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL.cmake delete mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL/CMakeLists.txt delete mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-stdout.txt delete mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED.cmake delete mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED/CMakeLists.txt create mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget-result.txt create mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt delete mode 100644 Tests/RunCMake/target_link_libraries/SubDirTarget-stdout.txt diff --git a/Help/command/target_link_libraries.rst b/Help/command/target_link_libraries.rst index 6379730d81..fcc2c0745d 100644 --- a/Help/command/target_link_libraries.rst +++ b/Help/command/target_link_libraries.rst @@ -18,7 +18,7 @@ All of them have the general form:: target_link_libraries( ... ... ...) -The named ```` must have been created by +The named ```` must have been created in the current directory by a command such as :command:`add_executable` or :command:`add_library` and must not be an :ref:`ALIAS target `. Repeated calls for the same ```` append items in the order called. diff --git a/Help/release/3.12.rst b/Help/release/3.12.rst index 4d1135e9f7..84ef695a12 100644 --- a/Help/release/3.12.rst +++ b/Help/release/3.12.rst @@ -81,9 +81,6 @@ Commands :ref:`Object Libraries`. Linking to an object library uses its object files in direct dependents and also propagates usage requirements. -* The :command:`target_link_libraries` command may now be called - to modify targets created outside the current directory. - Variables --------- diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx index 73f9a2eb03..1bbcf4692f 100644 --- a/Source/cmTargetLinkLibrariesCommand.cxx +++ b/Source/cmTargetLinkLibrariesCommand.cxx @@ -365,7 +365,7 @@ bool cmTargetLinkLibrariesCommand::HandleLibrary(const std::string& lib, if (this->CurrentProcessingState != ProcessingKeywordLinkInterface && this->CurrentProcessingState != ProcessingPlainLinkInterface) { - // Find target on the LHS locally + // Assure that the target on the LHS was created in the current directory. cmTarget* t = this->Makefile->FindLocalNonAliasTarget(this->Target->GetName()); if (!t) { @@ -378,18 +378,11 @@ bool cmTargetLinkLibrariesCommand::HandleLibrary(const std::string& lib, } } } - - // If no local target has been found, find it in the global scope - if (!t) { - t = this->Makefile->GetGlobalGenerator()->FindTarget( - this->Target->GetName(), true); - } - if (!t) { std::ostringstream e; e << "Attempt to add link library \"" << lib << "\" to target \"" << this->Target->GetName() - << "\" which does not exist or is an alias target."; + << "\" which is not built in this directory."; this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); return false; } diff --git a/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake b/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake index d61fa5f8cf..97b0888a7e 100644 --- a/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake +++ b/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake @@ -8,10 +8,7 @@ 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 deleted file mode 100644 index a7ef260e61..0000000000 --- a/Tests/RunCMake/target_link_libraries/SubDirImportedTarget-stdout.txt +++ /dev/null @@ -1,4 +0,0 @@ --- 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 deleted file mode 100644 index 738280be1b..0000000000 --- a/Tests/RunCMake/target_link_libraries/SubDirImportedTarget.cmake +++ /dev/null @@ -1,17 +0,0 @@ -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 deleted file mode 100644 index d67a01cb6e..0000000000 --- a/Tests/RunCMake/target_link_libraries/SubDirImportedTarget/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index a8c77cbbe0..0000000000 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL-stdout.txt +++ /dev/null @@ -1,2 +0,0 @@ --- 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 deleted file mode 100644 index 04d64e6529..0000000000 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL.cmake +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index 6c0c8b20c4..0000000000 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-GLOBAL/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 4980dc925a..0000000000 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED-stdout.txt +++ /dev/null @@ -1,2 +0,0 @@ --- 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 deleted file mode 100644 index e476a3f0cd..0000000000 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED.cmake +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index 4a40a68aef..0000000000 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget-UNKNOWN-IMPORTED/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -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 new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt new file mode 100644 index 0000000000..5cd1f23d7b --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget-stderr.txt @@ -0,0 +1,5 @@ +^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 deleted file mode 100644 index 646f984279..0000000000 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget-stdout.txt +++ /dev/null @@ -1,2 +0,0 @@ --- 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 55c658dc76..32431cecc0 100644 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget.cmake +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget.cmake @@ -1,11 +1,3 @@ enable_language(C) - -add_executable(mainexe empty.c) -add_library(mainlib empty.c) - add_subdirectory(SubDirTarget) - -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}") +target_link_libraries(subexe m) diff --git a/Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt b/Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt index 3d956a83d1..b0b23809a6 100644 --- a/Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt +++ b/Tests/RunCMake/target_link_libraries/SubDirTarget/CMakeLists.txt @@ -1,7 +1 @@ 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}") -- cgit v1.2.1