Test link multiplicity export/import
We test that LINK_INTERFACE_MULTIPLICITY propagates through export() and install(EXPORT) into dependent projects. A simple cycle of two archives that need to be scanned three times ensures that the importing project uses the multiplicity correctly.
This commit is contained in:
parent
0cfd8c411f
commit
d259128894
|
@ -73,12 +73,22 @@ target_link_libraries(testLib4
|
||||||
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)
|
||||||
|
|
||||||
|
# Test cyclic dependencies.
|
||||||
|
add_library(testLibCycleA STATIC
|
||||||
|
testLibCycleA1.c testLibCycleA2.c testLibCycleA3.c)
|
||||||
|
add_library(testLibCycleB STATIC
|
||||||
|
testLibCycleB1.c testLibCycleB2.c testLibCycleB3.c)
|
||||||
|
target_link_libraries(testLibCycleA testLibCycleB)
|
||||||
|
target_link_libraries(testLibCycleB testLibCycleA)
|
||||||
|
set_property(TARGET testLibCycleA PROPERTY LINK_INTERFACE_MULTIPLICITY 3)
|
||||||
|
|
||||||
# Install and export from install tree.
|
# Install and export from install tree.
|
||||||
install(
|
install(
|
||||||
TARGETS
|
TARGETS
|
||||||
testExe1 testLib1 testLib2 testExe2 testLib3 testLib4 testExe3
|
testExe1 testLib1 testLib2 testExe2 testLib3 testLib4 testExe3
|
||||||
testExe2lib testLib4lib testLib4libdbg testLib4libopt
|
testExe2lib testLib4lib testLib4libdbg testLib4libopt
|
||||||
testLib6
|
testLib6
|
||||||
|
testLibCycleA testLibCycleB
|
||||||
EXPORT exp
|
EXPORT exp
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION bin
|
||||||
LIBRARY DESTINATION lib NAMELINK_SKIP
|
LIBRARY DESTINATION lib NAMELINK_SKIP
|
||||||
|
@ -116,6 +126,7 @@ export(TARGETS testExe1 testLib1 testLib2 testLib3
|
||||||
)
|
)
|
||||||
export(TARGETS testExe2 testLib4 testLib5 testLib6 testExe3 testExe2lib
|
export(TARGETS testExe2 testLib4 testLib5 testLib6 testExe3 testExe2lib
|
||||||
testLib4lib testLib4libdbg testLib4libopt
|
testLib4lib testLib4libdbg testLib4libopt
|
||||||
|
testLibCycleA testLibCycleB
|
||||||
NAMESPACE bld_
|
NAMESPACE bld_
|
||||||
APPEND FILE ExportBuildTree.cmake
|
APPEND FILE ExportBuildTree.cmake
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
extern int testLibCycleB1(void);
|
||||||
|
int testLibCycleA1(void) { return testLibCycleB1(); }
|
|
@ -0,0 +1,2 @@
|
||||||
|
extern int testLibCycleB2(void);
|
||||||
|
int testLibCycleA2(void) { return testLibCycleB2(); }
|
|
@ -0,0 +1,2 @@
|
||||||
|
extern int testLibCycleB3(void);
|
||||||
|
int testLibCycleA3(void) { return testLibCycleB3(); }
|
|
@ -0,0 +1,2 @@
|
||||||
|
extern int testLibCycleA2(void);
|
||||||
|
int testLibCycleB1(void) { return testLibCycleA2(); }
|
|
@ -0,0 +1,2 @@
|
||||||
|
extern int testLibCycleA3(void);
|
||||||
|
int testLibCycleB2(void) { return testLibCycleA3(); }
|
|
@ -0,0 +1 @@
|
||||||
|
int testLibCycleB3(void) { return 0; }
|
|
@ -29,6 +29,7 @@ target_link_libraries(imp_testExe1
|
||||||
exp_testLib4
|
exp_testLib4
|
||||||
exp_testLib5
|
exp_testLib5
|
||||||
exp_testLib6
|
exp_testLib6
|
||||||
|
exp_testLibCycleA
|
||||||
)
|
)
|
||||||
|
|
||||||
# Try building a plugin to an executable imported from the install tree.
|
# Try building a plugin to an executable imported from the install tree.
|
||||||
|
@ -60,6 +61,7 @@ target_link_libraries(imp_testExe1b
|
||||||
bld_testLib4
|
bld_testLib4
|
||||||
bld_testLib5
|
bld_testLib5
|
||||||
bld_testLib6
|
bld_testLib6
|
||||||
|
bld_testLibCycleA
|
||||||
)
|
)
|
||||||
|
|
||||||
# Try building a plugin to an executable imported from the build tree.
|
# Try building a plugin to an executable imported from the build tree.
|
||||||
|
|
|
@ -6,6 +6,7 @@ extern int testLib4();
|
||||||
extern int testLib4lib();
|
extern int testLib4lib();
|
||||||
extern int testLib5();
|
extern int testLib5();
|
||||||
extern int testLib6();
|
extern int testLib6();
|
||||||
|
extern int testLibCycleA1();
|
||||||
|
|
||||||
/* Switch a symbol between debug and optimized builds to make sure the
|
/* Switch a symbol between debug and optimized builds to make sure the
|
||||||
proper library is found from the testLib4 link interface. */
|
proper library is found from the testLib4 link interface. */
|
||||||
|
@ -19,6 +20,6 @@ extern testLib4libcfg(void);
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
return (testLib2() + generated_by_testExe1() + testLib3() + testLib4()
|
return (testLib2() + generated_by_testExe1() + testLib3() + testLib4()
|
||||||
+ testLib5() + testLib6()
|
+ testLib5() + testLib6() + testLibCycleA1()
|
||||||
+ generated_by_testExe3() + testLib4lib() + testLib4libcfg());
|
+ generated_by_testExe3() + testLib4lib() + testLib4libcfg());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue