Can you / did you try this on Windows? I don't see any reason why it wouldn't work, but I remember having difficulty with all this CMake some time ago.
On Tue, Dec 5, 2017 at 1:50 PM Shoaib Meenai via lldb-commits < lldb-commits@lists.llvm.org> wrote: > Author: smeenai > Date: Tue Dec 5 13:49:56 2017 > New Revision: 319840 > > URL: http://llvm.org/viewvc/llvm-project?rev=319840&view=rev > Log: > [CMake] Use PRIVATE in target_link_libraries for executables > > We currently use target_link_libraries without an explicit scope > specifier (INTERFACE, PRIVATE or PUBLIC) when linking executables. > Dependencies added in this way apply to both the target and its > dependencies, i.e. they become part of the executable's link interface > and are transitive. > > Transitive dependencies generally don't make sense for executables, > since you wouldn't normally be linking against an executable. This also > causes issues for generating install export files when using > LLVM_DISTRIBUTION_COMPONENTS. For example, clang has a lot of LLVM > library dependencies, which are currently added as interface > dependencies. If clang is in the distribution components but the LLVM > libraries it depends on aren't (which is a perfectly legitimate use case > if the LLVM libraries are being built static and there are therefore no > run-time dependencies on them), CMake will complain about the LLVM > libraries not being in export set when attempting to generate the > install export file for clang. This is reasonable behavior on CMake's > part, and the right thing is for LLVM's build system to explicitly use > PRIVATE dependencies for executables. > > Unfortunately, CMake doesn't allow you to mix and match the keyword and > non-keyword target_link_libraries signatures for a single target; i.e., > if a single call to target_link_libraries for a particular target uses > one of the INTERFACE, PRIVATE, or PUBLIC keywords, all other calls must > also be updated to use those keywords. This means we must do this change > in a single shot. I also fully expect to have missed some instances; I > tested by enabling all the projects in the monorepo (except dragonegg), > and configuring both with and without shared libraries, on both Darwin > and Linux, but I'm planning to rely on the buildbots for other > configurations (since it should be pretty easy to fix those). > > Even after this change, we still have a lot of target_link_libraries > calls that don't specify a scope keyword, mostly for shared libraries. > I'm thinking about addressing those in a follow-up, but that's a > separate change IMO. > > Differential Revision: https://reviews.llvm.org/D40823 > > > Modified: > lldb/trunk/cmake/modules/AddLLDB.cmake > lldb/trunk/unittests/CMakeLists.txt > lldb/trunk/unittests/Interpreter/CMakeLists.txt > > Modified: lldb/trunk/cmake/modules/AddLLDB.cmake > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/cmake/modules/AddLLDB.cmake?rev=319840&r1=319839&r2=319840&view=diff > > ============================================================================== > --- lldb/trunk/cmake/modules/AddLLDB.cmake (original) > +++ lldb/trunk/cmake/modules/AddLLDB.cmake Tue Dec 5 13:49:56 2017 > @@ -92,7 +92,7 @@ function(add_lldb_executable name) > list(APPEND LLVM_LINK_COMPONENTS ${ARG_LINK_COMPONENTS}) > add_llvm_executable(${name} ${ARG_UNPARSED_ARGUMENTS}) > > - target_link_libraries(${name} ${ARG_LINK_LIBS}) > + target_link_libraries(${name} PRIVATE ${ARG_LINK_LIBS}) > set_target_properties(${name} PROPERTIES > FOLDER "lldb executables") > > > Modified: lldb/trunk/unittests/CMakeLists.txt > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/CMakeLists.txt?rev=319840&r1=319839&r2=319840&view=diff > > ============================================================================== > --- lldb/trunk/unittests/CMakeLists.txt (original) > +++ lldb/trunk/unittests/CMakeLists.txt Tue Dec 5 13:49:56 2017 > @@ -44,7 +44,7 @@ function(add_lldb_unittest test_name) > POST_BUILD > COMMAND "${CMAKE_COMMAND}" -E make_directory > ${CMAKE_CURRENT_BINARY_DIR}/Inputs) > > - target_link_libraries(${test_name} ${ARG_LINK_LIBS}) > + target_link_libraries(${test_name} PRIVATE ${ARG_LINK_LIBS}) > endfunction() > > function(add_unittest_inputs test_name inputs) > > Modified: lldb/trunk/unittests/Interpreter/CMakeLists.txt > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Interpreter/CMakeLists.txt?rev=319840&r1=319839&r2=319840&view=diff > > ============================================================================== > --- lldb/trunk/unittests/Interpreter/CMakeLists.txt (original) > +++ lldb/trunk/unittests/Interpreter/CMakeLists.txt Tue Dec 5 13:49:56 > 2017 > @@ -8,5 +8,6 @@ add_lldb_unittest(InterpreterTests > ) > > target_link_libraries(InterpreterTests > + PRIVATE > ${PYTHON_LIBRARY} > ) > > > _______________________________________________ > lldb-commits mailing list > lldb-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits >
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits