我有一些小组件正在构建为我的主应用程序的共享库。liba
让我们使用和的一个例子libb
。每个都在自己的子目录中构建,如下所示:
add_library(liba SHARED a.cpp)
然后,在根项目文件夹中,我需要将我的主应用程序链接到两者。
include_directories(a)
include_directories(b)
add_executable(dummy dummy.cpp)
target_link_libraries(dummy a b)
CMake 运行良好,我的应用程序编译但无法链接。问题是b引用了a。如果我在链接时提供库的顺序
target_link_libraries(dummy b a)
该程序编译和链接就好了
当这种系统开始涉及更复杂的库之间的依赖关系时,即使依赖关系是非循环的,它也开始变得不可能。如何在此处管理链接步骤?订购库以在 CMake 中进行链接有技巧吗?