【发布时间】:2022-01-23 03:43:58
【问题描述】:
我正在做一个需要一些外部库的项目。由于它是跨平台的,所以我使用的是 cmake。
分发此类项目时首选的方式是什么?我应该为外部库(例如 zlib)提供它们自己的 CMakeLists.txt,还是应该通过简单地提供 find_packages() 来表示依赖关系?
前者提供了所有需要的东西。而后者让开发人员决定如何提供依赖项(例如 vcpkg)
【问题讨论】:
-
“分发此类项目时首选的方式是什么?” - 没有普遍首选的方法。是否由您决定,是否将外部库构建为项目的一部分(从而为它们提供
CMakeLists.txt)或使用find_package来定位该库。我见过一个项目,它支持这两种方法并让用户在它们之间进行选择。 -
请注意,“提供外部库”可能对您有一些法律义务,如果这完全合法的话。您应该明确地查阅这些项目的许可证。如果您能够可靠地使
find_package工作,使用此选项是最简单的,但如果这在所有目标系统上都不可能或不可能,您可以使用the FetchContent module 作为后备...跨度>
标签: cmake dependencies