我正在尝试将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的:
明确声明lib1
指令中的lib2
和target_link_libraries
有效:
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
取决于哪些内容? 答案 0 :(得分:4)
就像将target_link_libraries
添加到lib2
LIB1:
add_library(lib1 STATIC ${SOURCES})
LIB2:
add_library(lib2 STATIC ${SOURCES})
target_link_libraries(lib2 lib1)
应用程式:
add_executable(app ${SOURCES})
target_link_libraries(app lib2)