我的目录中有两个子目录(项目)的项目,它们具有自己的CMakeLists.txt文件,例如
main_dir:
CMakeLists.txt
src/
dir_one/
CMakeLists.txt
src/
dir_two/
CMakeLists.txt
src/
我的CMakeLists.txt看起来像
.....
target_link_libraries (
main
/usr/lib/dir_one.so
/usr/lib/dir_two.so
)
如何使dir_one和dir_two在主版本内部静态构建,以方便部署?
(与main静态链接)。
最佳答案
只需在target_link_libraries中使用项目名称即可,而不要使用.so文件。 CMake将正确设置所有依赖项,并链接它们的输出。
target_link_libraries(main dir_one dir_two)
从文档引用:
如果库名与项目中另一个目标的库名匹配,则会在构建系统中自动添加一个依赖项,以确保要链接的库是最新的,而不是目标链接。以-开头而不是-l或-framework开头的项目名称被视为链接器标志。