gpt4 book ai didi

cmake - 我应该使用 add_subdirectory 还是 find_package?

转载 作者:行者123 更新时间:2023-12-04 11:16:57 51 4
gpt4 key购买 nike

我有一些项目遵循这个依赖关系图:

Executable
Main
Libraries A, B, and C


Main //_Depends_A_B_C

A //_Depends_B

B

C //Depends_B

做一个使用 add_subdirectory的 super 项目对我来说更有意义吗?将 A、B 和 C 放在全局范围内并将它们链接在一起?
Proj/

CMakeList.txt // Has add_subdirectory for each directory in b,a,c,Main order.

a/

b/

c/

Main/

或者我应该经历制作 find_package 的麻烦他们的解决方案。
Main/

A/ //Installed to system

B/ //Installed to system

C/ //Installed to system

这些库正在开发中,因此很高兴能够将它们全部视为我的 IDE 中的一个项目,但我不想滥用 add_subdirectory以适合我的特定开发工具。

最佳答案

依赖项是第三方 ,那么你应该使用 find_package .这允许有人用系统提供的依赖项替换您的依赖项。这在创作可能包含在包管理器中的库时很重要,例如 vcpkg或 Linux 发行版的标准存储库。
依赖项可能被交叉编译 相对于您的代码(例如,它是构建时工具或 Bison 之类的代码生成器),那么您必须使用 find_package .在给定的 CMake 构建期间,可能只有一个工具链处于事件状态。
如果您将依赖项存储在您的存储库中(直接或作为子模块),则使用 ExternalProject 进行 super build设置可能会很方便。您的顶级项目将仅由外部项目编排组成,每个子项目将安装到本地前缀,并在相同前缀中查找包。见 CMAKE_INSTALL_PREFIX CMAKE_PREFIX_PATH 了解更多详情。
在任何其他情况下,首选 add_subdirectory .

关于cmake - 我应该使用 add_subdirectory 还是 find_package?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38081708/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com