CMAKE:自动添加依赖项的依赖
CMAKE: automatically add dependencies of dependencies
我正在尝试将 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
所依赖的任何东西?
在lib2
中加上target_link_libraries
就这么简单
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)
我正在尝试将 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
所依赖的任何东西?
在lib2
target_link_libraries
就这么简单
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)