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)
|
||||
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(
|
||||
TARGETS
|
||||
testExe1 testLib1 testLib2 testExe2 testLib3 testLib4 testExe3
|
||||
testExe2lib testLib4lib testLib4libdbg testLib4libopt
|
||||
testLib6
|
||||
testLibCycleA testLibCycleB
|
||||
EXPORT exp
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib NAMELINK_SKIP
|
||||
|
@ -116,6 +126,7 @@ export(TARGETS testExe1 testLib1 testLib2 testLib3
|
|||
)
|
||||
export(TARGETS testExe2 testLib4 testLib5 testLib6 testExe3 testExe2lib
|
||||
testLib4lib testLib4libdbg testLib4libopt
|
||||
testLibCycleA testLibCycleB
|
||||
NAMESPACE bld_
|
||||
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_testLib5
|
||||
exp_testLib6
|
||||
exp_testLibCycleA
|
||||
)
|
||||
|
||||
# Try building a plugin to an executable imported from the install tree.
|
||||
|
@ -60,6 +61,7 @@ target_link_libraries(imp_testExe1b
|
|||
bld_testLib4
|
||||
bld_testLib5
|
||||
bld_testLib6
|
||||
bld_testLibCycleA
|
||||
)
|
||||
|
||||
# Try building a plugin to an executable imported from the build tree.
|
||||
|
|
|
@ -6,6 +6,7 @@ extern int testLib4();
|
|||
extern int testLib4lib();
|
||||
extern int testLib5();
|
||||
extern int testLib6();
|
||||
extern int testLibCycleA1();
|
||||
|
||||
/* Switch a symbol between debug and optimized builds to make sure the
|
||||
proper library is found from the testLib4 link interface. */
|
||||
|
@ -19,6 +20,6 @@ extern testLib4libcfg(void);
|
|||
int main()
|
||||
{
|
||||
return (testLib2() + generated_by_testExe1() + testLib3() + testLib4()
|
||||
+ testLib5() + testLib6()
|
||||
+ testLib5() + testLib6() + testLibCycleA1()
|
||||
+ generated_by_testExe3() + testLib4lib() + testLib4libcfg());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue