ENH: Test target_link_libraries INTERFACE option
This commit is contained in:
parent
e322d288af
commit
7b873cd951
|
@ -35,6 +35,22 @@ set_property(TARGET testLib3 PROPERTY SOVERSION 3)
|
||||||
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)
|
||||||
|
|
||||||
|
# Test using the target_link_libraries command to set the
|
||||||
|
# LINK_INTERFACE_LIBRARIES* properties. We construct two libraries
|
||||||
|
# providing the same two symbols. In each library one of the symbols
|
||||||
|
# will work and the other one will fail to link. The import part of
|
||||||
|
# this test will try to use the symbol corresponding to the
|
||||||
|
# configuration in which it is built. If the proper library is not
|
||||||
|
# used via the link interface the import test will fail to link.
|
||||||
|
add_library(testLib4lib STATIC testLib4lib.c)
|
||||||
|
add_library(testLib4libdbg STATIC testLib4libopt.c testLib4libdbg.c)
|
||||||
|
add_library(testLib4libopt STATIC testLib4libdbg.c testLib4libopt.c)
|
||||||
|
set_property(TARGET testLib4libdbg PROPERTY COMPILE_DEFINITIONS LIB_DBG)
|
||||||
|
set_property(TARGET testLib4libopt PROPERTY COMPILE_DEFINITIONS LIB_OPT)
|
||||||
|
target_link_libraries(testLib4
|
||||||
|
INTERFACE testLib4lib debug testLib4libdbg optimized testLib4libopt
|
||||||
|
)
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
|
@ -42,7 +58,7 @@ set_property(TARGET testExe3 PROPERTY MACOSX_BUNDLE 1)
|
||||||
install(
|
install(
|
||||||
TARGETS
|
TARGETS
|
||||||
testExe1 testLib1 testLib2 testExe2 testLib3 testLib4 testExe3
|
testExe1 testLib1 testLib2 testExe2 testLib3 testLib4 testExe3
|
||||||
testExe2lib
|
testExe2lib testLib4lib testLib4libdbg testLib4libopt
|
||||||
EXPORT exp
|
EXPORT exp
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION bin
|
||||||
LIBRARY DESTINATION lib NAMELINK_SKIP
|
LIBRARY DESTINATION lib NAMELINK_SKIP
|
||||||
|
@ -67,6 +83,7 @@ export(TARGETS testExe1 testLib1 testLib2 testLib3
|
||||||
FILE ExportBuildTree.cmake
|
FILE ExportBuildTree.cmake
|
||||||
)
|
)
|
||||||
export(TARGETS testExe2 testLib4 testExe3 testExe2lib
|
export(TARGETS testExe2 testLib4 testExe3 testExe2lib
|
||||||
|
testLib4lib testLib4libdbg testLib4libopt
|
||||||
NAMESPACE bld_
|
NAMESPACE bld_
|
||||||
APPEND FILE ExportBuildTree.cmake
|
APPEND FILE ExportBuildTree.cmake
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
int testLib4lib(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
#ifdef LIB_DBG
|
||||||
|
/* We are building in testLib4libdbg. Provide the correct symbol. */
|
||||||
|
int testLib4libdbg(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
/* We are not building in testLib4libdbg. Poison the symbol. */
|
||||||
|
extern int testLib4libdbg_noexist(void);
|
||||||
|
int testLib4libdbg(void)
|
||||||
|
{
|
||||||
|
return testLib4libdbg_noexist();
|
||||||
|
}
|
||||||
|
#endif
|
|
@ -0,0 +1,14 @@
|
||||||
|
#ifdef LIB_OPT
|
||||||
|
/* We are building in testLib4libopt. Provide the correct symbol. */
|
||||||
|
int testLib4libopt(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
/* We are not building in testLib4libopt. Poison the symbol. */
|
||||||
|
extern int testLib4libopt_noexist(void);
|
||||||
|
int testLib4libopt(void)
|
||||||
|
{
|
||||||
|
return testLib4libopt_noexist();
|
||||||
|
}
|
||||||
|
#endif
|
|
@ -32,6 +32,7 @@ add_executable(imp_testExe1
|
||||||
|
|
||||||
# Try linking to a library imported from the install tree.
|
# Try linking to a library imported from the install tree.
|
||||||
target_link_libraries(imp_testExe1 exp_testLib2 exp_testLib3 exp_testLib4)
|
target_link_libraries(imp_testExe1 exp_testLib2 exp_testLib3 exp_testLib4)
|
||||||
|
set_property(TARGET imp_testExe1 PROPERTY COMPILE_DEFINITIONS_DEBUG EXE_DBG)
|
||||||
|
|
||||||
# Try building a plugin to an executable imported from the install tree.
|
# Try building a plugin to an executable imported from the install tree.
|
||||||
add_library(imp_mod1 MODULE imp_mod1.c)
|
add_library(imp_mod1 MODULE imp_mod1.c)
|
||||||
|
@ -57,6 +58,7 @@ add_executable(imp_testExe1b
|
||||||
|
|
||||||
# Try linking to a library imported from the build tree.
|
# Try linking to a library imported from the build tree.
|
||||||
target_link_libraries(imp_testExe1b bld_testLib2 bld_testLib3 bld_testLib4)
|
target_link_libraries(imp_testExe1b bld_testLib2 bld_testLib3 bld_testLib4)
|
||||||
|
set_property(TARGET imp_testExe1b PROPERTY COMPILE_DEFINITIONS_DEBUG EXE_DBG)
|
||||||
|
|
||||||
# Try building a plugin to an executable imported from the build tree.
|
# Try building a plugin to an executable imported from the build tree.
|
||||||
add_library(imp_mod1b MODULE imp_mod1.c)
|
add_library(imp_mod1b MODULE imp_mod1.c)
|
||||||
|
|
|
@ -3,9 +3,19 @@ extern int generated_by_testExe3();
|
||||||
extern int testLib2();
|
extern int testLib2();
|
||||||
extern int testLib3();
|
extern int testLib3();
|
||||||
extern int testLib4();
|
extern int testLib4();
|
||||||
|
extern int testLib4lib();
|
||||||
|
|
||||||
|
/* Switch a symbol between debug and optimized builds to make sure the
|
||||||
|
proper library is found from the testLib4 link interface. */
|
||||||
|
#ifdef EXE_DBG
|
||||||
|
# define testLib4libcfg testLib4libdbg
|
||||||
|
#else
|
||||||
|
# define testLib4libcfg testLib4libopt
|
||||||
|
#endif
|
||||||
|
extern testLib4libcfg(void);
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
return (testLib2() + generated_by_testExe1() + testLib3() + testLib4()
|
return (testLib2() + generated_by_testExe1() + testLib3() + testLib4()
|
||||||
+ generated_by_testExe3());
|
+ generated_by_testExe3() + testLib4lib() + testLib4libcfg());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue