【发布时间】:2016-04-15 14:19:02
【问题描述】:
我正在尝试将 boost-build 构建系统迁移到 cmake。
boost-build 的功能之一是自动链接依赖项的依赖关系。
例如:
增强构建:
我正在构建一个可执行文件app。这取决于lib2
exe app
: [ glob *.cpp ]
/proj/lib2//lib2
;
反过来,lib2 依赖于lib1
lib lib2
: [ glob *.cpp ]
/proj/lib1//lib1
;
并且lib1 没有依赖关系
lib lib1
: [ glob *.cpp ]
;
lib1 和 lib2 都是静态库。
boost-build 会自动将lib1.a 添加到app 的链接器行,因为它知道lib2.a 依赖于lib1.a
cmake:
明确在 target_link_libraries 指令中同时声明 lib1 和 lib2 有效:
lib1:
add_library(lib1 STATIC ${SOURCES})
lib2:
add_library(lib2 STATIC ${SOURCES})
应用程序:
add_executable(app ${SOURCES})
target_link_libraries(app lib1 lib2)
随着图书馆数量的增加,这变得很麻烦。
target_link_libraries(app lib1 lib2 lib3 lib4 lib5 lib6 lib7 lib8 lib9 ... libN)
问题:
- 有没有办法指定
lib2依赖于lib1 - 有没有办法告诉
app拉入lib2以及lib2所依赖的任何东西?
【问题讨论】:
-
@TomaszLewowski 这个要好得多:setting-dependencies-between-libraries-cmake
标签: c++ cmake boost-build