ENH: Updated ExportImport test to try LINK_INTERFACE_LIBRARIES.

This commit is contained in:
Brad King 2008-01-30 17:26:09 -05:00
parent 7902bc06aa
commit 109b5fc7a2
7 changed files with 59 additions and 14 deletions

View File

@ -11,15 +11,20 @@ set_property(
PROPERTY SYMBOLIC 1 PROPERTY SYMBOLIC 1
) )
# Build and install the exporter.
if(CMAKE_CONFIGURATION_TYPES) if(CMAKE_CONFIGURATION_TYPES)
set(Export_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}") set(NESTED_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}")
else(CMAKE_CONFIGURATION_TYPES) else(CMAKE_CONFIGURATION_TYPES)
set(Export_CONFIG_TYPE) if(CMAKE_BUILD_TYPE)
set(NESTED_CONFIG_TYPE -C "${CMAKE_BUILD_TYPE}")
else(CMAKE_BUILD_TYPE)
set(NESTED_CONFIG_TYPE)
endif(CMAKE_BUILD_TYPE)
endif(CMAKE_CONFIGURATION_TYPES) endif(CMAKE_CONFIGURATION_TYPES)
# Build and install the exporter.
add_custom_command( add_custom_command(
OUTPUT ${ExportImport_BINARY_DIR}/ExportProject OUTPUT ${ExportImport_BINARY_DIR}/ExportProject
COMMAND ${CMAKE_CTEST_COMMAND} ${Export_CONFIG_TYPE} COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
--build-and-test --build-and-test
${ExportImport_SOURCE_DIR}/Export ${ExportImport_SOURCE_DIR}/Export
${ExportImport_BINARY_DIR}/Export ${ExportImport_BINARY_DIR}/Export
@ -45,14 +50,9 @@ set_property(
) )
# Build and install the importer. # Build and install the importer.
if(CMAKE_CONFIGURATION_TYPES)
set(Import_CONFIG_TYPE -C "${CMAKE_CFG_INTDIR}")
else(CMAKE_CONFIGURATION_TYPES)
set(Import_CONFIG_TYPE)
endif(CMAKE_CONFIGURATION_TYPES)
add_custom_command( add_custom_command(
OUTPUT ${ExportImport_BINARY_DIR}/ImportProject OUTPUT ${ExportImport_BINARY_DIR}/ImportProject
COMMAND ${CMAKE_CTEST_COMMAND} ${Import_CONFIG_TYPE} COMMAND ${CMAKE_CTEST_COMMAND} ${NESTED_CONFIG_TYPE}
--build-and-test --build-and-test
${ExportImport_SOURCE_DIR}/Import ${ExportImport_SOURCE_DIR}/Import
${ExportImport_BINARY_DIR}/Import ${ExportImport_BINARY_DIR}/Import

View File

@ -9,14 +9,22 @@ add_library(testExe1lib STATIC testExe1lib.c) # not exported
add_executable(testExe1 testExe1.c) add_executable(testExe1 testExe1.c)
target_link_libraries(testExe1 testExe1lib) target_link_libraries(testExe1 testExe1lib)
add_library(testExe2libImp SHARED testExe2libImp.c)
add_library(testExe2lib SHARED testExe2lib.c)
target_link_libraries(testExe2lib testExe2libImp)
set_property(TARGET testExe2lib PROPERTY LINK_INTERFACE_LIBRARIES "")
add_executable(testExe2 testExe2.c) add_executable(testExe2 testExe2.c)
set_property(TARGET testExe2 PROPERTY ENABLE_EXPORTS 1) set_property(TARGET testExe2 PROPERTY ENABLE_EXPORTS 1)
set_property(TARGET testExe2 PROPERTY LINK_INTERFACE_LIBRARIES testExe2lib)
add_library(testLib1 STATIC testLib1.c) add_library(testLib1 STATIC testLib1.c)
add_library(testLib2 STATIC testLib2.c) add_library(testLib2 STATIC testLib2.c)
target_link_libraries(testLib2 testLib1) target_link_libraries(testLib2 testLib1)
add_library(testLib3Imp SHARED testLib3Imp.c)
add_library(testLib3 SHARED testLib3.c) add_library(testLib3 SHARED testLib3.c)
target_link_libraries(testLib3 testLib3Imp)
set_property(TARGET testLib3 PROPERTY LINK_INTERFACE_LIBRARIES "")
add_library(testLib4 SHARED testLib4.c) add_library(testLib4 SHARED testLib4.c)
set_property(TARGET testLib4 PROPERTY FRAMEWORK 1) set_property(TARGET testLib4 PROPERTY FRAMEWORK 1)
@ -24,9 +32,18 @@ set_property(TARGET testLib4 PROPERTY FRAMEWORK 1)
add_executable(testExe3 testExe3.c) add_executable(testExe3 testExe3.c)
set_property(TARGET testExe3 PROPERTY MACOSX_BUNDLE 1) set_property(TARGET testExe3 PROPERTY MACOSX_BUNDLE 1)
# Install helper targets that are not part of the interface.
install(
TARGETS testExe2libImp testLib3Imp
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
# Install and export from install tree. # Install and export from install tree.
install( install(
TARGETS testExe1 testLib1 testLib2 testExe2 testLib3 testLib4 testExe3 TARGETS testExe1 testLib1 testLib2 testExe2 testLib3 testLib4 testExe3
testExe2lib
EXPORT exp EXPORT exp
RUNTIME DESTINATION bin RUNTIME DESTINATION bin
LIBRARY DESTINATION lib LIBRARY DESTINATION lib
@ -37,11 +54,11 @@ install(
install(EXPORT exp NAMESPACE exp_ DESTINATION lib/exp) install(EXPORT exp NAMESPACE exp_ DESTINATION lib/exp)
# Export from build tree. # Export from build tree.
export(TARGETS testExe1 testLib1 testLib2 export(TARGETS testExe1 testLib1 testLib2 testLib3
NAMESPACE bld_ NAMESPACE bld_
FILE ExportBuildTree.cmake FILE ExportBuildTree.cmake
) )
export(TARGETS testExe2 testLib3 testLib4 testExe3 export(TARGETS testExe2 testLib4 testExe3 testExe2lib
NAMESPACE bld_ NAMESPACE bld_
APPEND FILE ExportBuildTree.cmake APPEND FILE ExportBuildTree.cmake
) )

View File

@ -0,0 +1,10 @@
#if defined(_WIN32) || defined(__CYGWIN__)
# define testExe2lib_EXPORT __declspec(dllexport)
# define testExe2libImp_IMPORT __declspec(dllimport)
#else
# define testExe2lib_EXPORT
# define testExe2libImp_IMPORT
#endif
testExe2libImp_IMPORT int testExe2libImp(void);
testExe2lib_EXPORT int testExe2lib(void) { return testExe2libImp(); }

View File

@ -0,0 +1,7 @@
#if defined(_WIN32) || defined(__CYGWIN__)
# define testExe2libImp_EXPORT __declspec(dllexport)
#else
# define testExe2libImp_EXPORT
#endif
testExe2libImp_EXPORT int testExe2libImp(void) { return 0; }

View File

@ -1,7 +1,10 @@
#if defined(_WIN32) || defined(__CYGWIN__) #if defined(_WIN32) || defined(__CYGWIN__)
# define testLib3_EXPORT __declspec(dllexport) # define testLib3_EXPORT __declspec(dllexport)
# define testLib3Imp_IMPORT __declspec(dllimport)
#else #else
# define testLib3_EXPORT # define testLib3_EXPORT
# define testLib3Imp_IMPORT
#endif #endif
testLib3_EXPORT int testLib3(void) { return 0; } testLib3Imp_IMPORT int testLib3Imp(void);
testLib3_EXPORT int testLib3(void) { return testLib3Imp(); }

View File

@ -0,0 +1,7 @@
#if defined(_WIN32) || defined(__CYGWIN__)
# define testLib3Imp_EXPORT __declspec(dllexport)
#else
# define testLib3Imp_EXPORT
#endif
testLib3Imp_EXPORT int testLib3Imp(void) { return 0; }

View File

@ -5,8 +5,9 @@
#endif #endif
testExe2_IMPORT int testExe2Func(void); testExe2_IMPORT int testExe2Func(void);
testExe2_IMPORT int testExe2lib(void);
int imp_mod1() int imp_mod1()
{ {
return testExe2Func(); return testExe2Func() + testExe2lib();
} }