未定义的符号(共享库作为另一个共享库的一部分,通过cmake构建)

时间:2013-06-05 10:04:04

标签: linker cmake shared-libraries

我正在编译我的共享库,该库旨在用于我的另一个(主)共享库。 因此,整个设置使用cmake编译,大致如下:

对于“main”共享库:

ADD_LIBRARY(lib_outer SHARED
   ....
   )

TARGET_LINK_LIBRARIES(lib_outer 
    lib_inner 
    ...
    ) 

对于其他共享库:

ADD_LIBRARY(lib_inner SHARED 
  .... 
   )

现在,lib_inner使用了在第二个lib_outer中定义和实施的一些功能,这会导致Undefined symbols for architecture x86_64链接错误。

我可以告诉cmake忽略这些吗? 我会使用像'external when using those functions inside lib_inner`这样的东西吗? 我想解决方案很简单,但我从未遇到过这样的问题。

1 个答案:

答案 0 :(得分:1)

经过与同事的一些讨论后,似乎唯一不错的选择是同时整合两个库。有效地组合之前用于生成两个独立但依赖的库的CMakeLists.txt文件。