gpt4 book ai didi

c++ - 是否有一种很好的跨平台方式来使用 CMake 包含外部 C++ 库?

转载 作者:搜寻专家 更新时间:2023-10-31 02:09:13 25 4
gpt4 key购买 nike

我是 cmake 的新手,但到目前为止,我很喜欢它在我的测试项目中的表现,迫不及待地想在我的下一个实际项目中使用它。

我想开始将 cmake 与外部库(接口(interface)、pdf、json 库等)一起使用,但我对执行此操作的最佳方法有点困惑,它仍然允许项目跨平台。

例如,让我们使用像 wxWidgets 这样的库,它需要在每个系统的基础上进行编译(我知道 wxWidgets 有一个 cmake 命令,但我只是将它用作示例)。

是要求用户在源目录中包含编译后的wxWidgets文件,然后在CMakeLists.txt文件中指向它,还是要求他们设置一个指向wxWidgets的系统变量更好? install 目录,然后指向 CMakeLists.txt 文件中的那个?有没有办法包含一个自动库构建命令,我可以只包含大量的 wxWidgets 源代码?还是我完全忽略了另一种解决方案?

以上所有内容都可能以某种形式工作,但随着 CMake 的广泛使用,我很好奇大多数人会如何处理它。

这个问题在谷歌搜索中很难用短语表达,如果已经有人问过,我们深表歉意。

最佳答案

正如您所说,许多库在 CMake 中已经有一个模块,允许 CMake 定位它们的文件。如果是这种情况,通常他们需要的只是找到包含外部库的“根”目录。这就是 CMAKE_PREFIX_PATH 的原因变量,它经常在命令行中指定。例如:

 cmake . -DCMAKE_PREFIX_PATH="<WxWidgetsRoot>"

在许多系统(*nix 和 OSX)上,库和头文件被安装到系统路径中,CMake 将自动定位它们,因为默认情况下会搜索这些路径。在 Windows 系统上,通常为 CMAKE_PREFIX_PATH用来。

如果您的外部项目没有定位其 header /库的 CMake 脚本,您可以通过创建一个 Find<package>.cmake 来自己编写它文件并将其放入您的 CMAKE_MODULE_PATH .参见 here获取更详细的说明。

至于你的项目依赖的分发,那完全取决于你。 a) 要求您的用户手动获取它们,b) 通过脚本下载它们,c) 从您自己的源代码控制(例如 git submodule)中获取它们中的任何一个都是可能的选择,并且可能还有更多选择。

关于c++ - 是否有一种很好的跨平台方式来使用 CMake 包含外部 C++ 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46733147/

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