【发布时间】:2020-05-01 00:30:28
【问题描述】:
我有以下树:
/all-targets
----CMakeLists.txt
----/target1
--------CMakeLists.txt
--------/include
--------/src
----/target2
--------CMakeLists.txt
--------/include
--------/src
----/target3
--------CMakeLists.txt
--------/include
--------/src
顶级 CMake 应该能够将所有目标链接在一起,而无需生成任何可执行文件或库文件,只生成具有正确结构/树的任何项目类型
target1 需要具有来自 target2 的库/对象文件,以便可以编译。
我读过这些:1.Multiple CMakeLists 2.CMake - Depending on another cmake project
我现在理解的是在顶层 CMakeLists.txt 我可以添加 add-subdirectory 命令来添加 target1、target2 和 target3(子目录),但我仍然不明白我应该在 /target1 中添加什么/CmakeLists.txt 以便它可以与 target2 库文件链接?我不认为它是add-subdirectory,因为在这种情况下,target2 目录是兄弟目录而不是子目录。
顶级 CmakeLists.txt 文件是否理解我只想创建将目标链接在一起的项目文件而没有输出(可执行文件 - 库)。
【问题讨论】:
-
这些是什么类型的目标?它们都是独立的可执行文件吗?静态库?它们是单独使用还是在最终的顶级可执行文件/库中链接在一起?
-
"我应该在 /target1/CmakeLists.txt 中添加什么以便它可以与 target2 库文件链接?" - 假设您在对应目录中创建了目标
target1和target2,则需要添加target_link_libraries(target1 target2)。 “顶级CMake应该能够将所有目标链接在一起而不产生任何可执行文件或库文件” - 我不明白这一点。 链接 是产生某些东西(可执行文件或库)的过程的一部分。您能否将CMakeLists.txt文件的上下文添加到问题帖子中?这有助于了解您的意图。 -
@Botje 是的,它们是独立的可执行文件,也可以与其他目标一起用作静态库,它们也将单独使用,并与顶层一起使用。 (顶层只是产生.即包含所有这些目标的xcode项目
-
@Tsyvarev 我的意思是顶级
CMakeLists.txt应该能够产生.i.e. Xcode 项目包含所有目标一起。如果我能够以正确的方式解释我的想法,我不会:\