我的目录中有两个子目录(项目)的项目,它们具有自己的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开头的项目名称被视为链接器标志。

09-18 02:35
查看更多