From fd4fb9ef040dde7961500e2241b43909a9e6b1a4 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Mon, 19 Aug 2013 11:57:13 +0200 Subject: try_compile: Extract IMPORTED targets from LINK_DEPENDENT_LIBRARIES --- Source/cmExportTryCompileFileGenerator.cxx | 3 ++- Tests/ExportImport/Export/CMakeLists.txt | 16 +++++++++++++++- Tests/ExportImport/Export/testSharedLibRequiredUser.cpp | 10 ++++++++++ Tests/ExportImport/Export/testSharedLibRequiredUser.h | 12 ++++++++++++ Tests/ExportImport/Import/try_compile/CMakeLists.txt | 12 ++++++------ 5 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 Tests/ExportImport/Export/testSharedLibRequiredUser.cpp create mode 100644 Tests/ExportImport/Export/testSharedLibRequiredUser.h diff --git a/Source/cmExportTryCompileFileGenerator.cxx b/Source/cmExportTryCompileFileGenerator.cxx index e7b185a..0a17232 100644 --- a/Source/cmExportTryCompileFileGenerator.cxx +++ b/Source/cmExportTryCompileFileGenerator.cxx @@ -93,7 +93,8 @@ cmExportTryCompileFileGenerator::PopulateProperties(cmTarget* target, { properties[i->first] = i->second.GetValue(); - if(i->first.find("IMPORTED_LINK_INTERFACE_LIBRARIES") == 0) + if(i->first.find("IMPORTED_LINK_INTERFACE_LIBRARIES") == 0 + || i->first.find("IMPORTED_LINK_DEPENDENT_LIBRARIES") == 0) { const std::string libs = i->second.GetValue(); diff --git a/Tests/ExportImport/Export/CMakeLists.txt b/Tests/ExportImport/Export/CMakeLists.txt index b5b2027..fb2ca86 100644 --- a/Tests/ExportImport/Export/CMakeLists.txt +++ b/Tests/ExportImport/Export/CMakeLists.txt @@ -213,6 +213,19 @@ set_property(TARGET testSharedLibRequired APPEND PROPERTY $<$:-DCUSTOM_COMPILE_OPTION> ) +add_library(testSharedLibRequiredUser SHARED testSharedLibRequiredUser.cpp) +generate_export_header(testSharedLibRequiredUser) +# LINK_PRIVATE so that it appears in the LINK_DEPENDENT_LIBRARIES, but not +# the INTERFACE_LINK_LIBRARIES. +set_property(TARGET testSharedLibRequiredUser APPEND PROPERTY + INTERFACE_INCLUDE_DIRECTORIES "$" +) +target_link_libraries(testSharedLibRequiredUser LINK_PRIVATE testSharedLibRequired) +install(FILES + "${CMAKE_CURRENT_SOURCE_DIR}/testSharedLibRequiredUser.h" + "${CMAKE_CURRENT_BINARY_DIR}/testsharedlibrequireduser_export.h" + DESTINATION include/testSharedLibRequiredUser +) add_library(testSharedLibDepends SHARED testSharedLibDepends.cpp) set_property(TARGET testSharedLibDepends APPEND PROPERTY @@ -284,6 +297,7 @@ install(TARGETS testLibIncludeRequired5 testLibIncludeRequired6 testSharedLibRequired + testSharedLibRequiredUser noIncludesInterface EXPORT RequiredExp DESTINATION lib INCLUDES DESTINATION @@ -384,7 +398,7 @@ add_subdirectory(sublib) # For CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE test. # Export from build tree. export(TARGETS testExe1 testLib1 testLib2 testLib3 testExe2libImp testLib3Imp testLib3ImpDep subdirlib - testSharedLibRequired testSharedLibDepends renamed_on_export + testSharedLibRequired testSharedLibRequiredUser testSharedLibDepends renamed_on_export cmp0022NEW cmp0022OLD NAMESPACE bld_ FILE ExportBuildTree.cmake diff --git a/Tests/ExportImport/Export/testSharedLibRequiredUser.cpp b/Tests/ExportImport/Export/testSharedLibRequiredUser.cpp new file mode 100644 index 0000000..5580005 --- /dev/null +++ b/Tests/ExportImport/Export/testSharedLibRequiredUser.cpp @@ -0,0 +1,10 @@ + +#include "testSharedLibRequiredUser.h" + +#include "testSharedLibRequired.h" + +int TestSharedLibRequiredUser::foo() +{ + TestSharedLibRequired req; + return req.foo(); +} diff --git a/Tests/ExportImport/Export/testSharedLibRequiredUser.h b/Tests/ExportImport/Export/testSharedLibRequiredUser.h new file mode 100644 index 0000000..58bcaa5 --- /dev/null +++ b/Tests/ExportImport/Export/testSharedLibRequiredUser.h @@ -0,0 +1,12 @@ + +#ifndef TESTSHAREDLIBREQUIREDUSER_H +#define TESTSHAREDLIBREQUIREDUSER_H + +#include "testsharedlibrequireduser_export.h" + +struct TESTSHAREDLIBREQUIREDUSER_EXPORT TestSharedLibRequiredUser +{ + int foo(); +}; + +#endif diff --git a/Tests/ExportImport/Import/try_compile/CMakeLists.txt b/Tests/ExportImport/Import/try_compile/CMakeLists.txt index 5600dff..0e57c17 100644 --- a/Tests/ExportImport/Import/try_compile/CMakeLists.txt +++ b/Tests/ExportImport/Import/try_compile/CMakeLists.txt @@ -5,17 +5,17 @@ find_package(testLibRequired 2.5 REQUIRED) include(CheckCXXSourceCompiles) -set(CMAKE_REQUIRED_LIBRARIES Req::testSharedLibRequired) +set(CMAKE_REQUIRED_LIBRARIES Req::testSharedLibRequiredUser) check_cxx_source_compiles( " -#include \"testSharedLibRequired.h\" +#include \"testSharedLibRequiredUser.h\" int main(int argc, char **argv) { - TestSharedLibRequired req; - return req.foo(); + TestSharedLibRequiredUser user; + return user.foo(); } -" SHARED_LIB_REQUIRED) +" SHARED_LIB_DEPENDS) -if(NOT SHARED_LIB_REQUIRED) +if(NOT SHARED_LIB_DEPENDS) message(SEND_ERROR "try_compile with IMPORTED targets failed!\n\n${OUTPUT}") endif() -- cgit v0.12