gpt4 book ai didi

c++ - 如何以独立于系统的方式将库添加到项目中?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:52:09 26 4
gpt4 key购买 nike

我正在使用 Qt 和 OpenGL 开发应用程序,发现有必要下载 GLM 库。这是一个只有标题的库,所以我不需要链接到任何东西。我希望此应用程序能够在任何安装了正确库的系统上构建。我的问题是我不知道将 GLM 放在哪里,以便系统可以在不向项目的 .pro 文件添加特定路径的情况下找到它。 .pro 文件是我的 git 存储库的一部分,这是将源代码分发到 Linux 等其他系统的方式。所以我不希望这个文件指定 GLM 的确切位置,因为其他系统可能在其他地方有它.

我目前正在 Windows 上开发,使用 Visual C++ 2010 在 Qt Creator 中编译。我从 MSDN 中读到那#include <file>使用 INCLUDE 环境变量进行搜索,所以我尝试将 glm.hpp 的路径添加到 INCLUDE,但是 QtCreator 的这个项目的构建环境似乎覆盖了 INCLUDE。因此,我从 QtCreator 的“项目”选项卡中将 GLM 的路径附加到新的 INCLUDE,但我的代码仍然找不到 glm.hpp。

一般来说,我如何将外部库添加到我的系统,以便我的编译器能够在不指定分发到其他系统的项目文件中的确切位置的情况下找到它?

最佳答案

您需要的是一个构建系统,它能够在系统中搜索您请求的库,并且能够在任何平台上执行此操作。一个这样的构建系统是 cmake ,它是使用最广泛的构建系统。本质上,cmake 允许您编写一个构建脚本,您可以在其中指定在 Qt Creator 或 Visual Studio 中创建项目时通常指定的所有内容,例如源文件列表,按编译目标分组(库、可执行文件、等), header 的相对路径,以及用于链接和包含路径的库,等等。对于安装在系统上的库,有一个函数,称为 find_package() (cmake 脚本命令的一部分),它将查明是否安装了库以及在哪里可以找到它的 lib 文件和 header (将这些路径存储为可以在目标上指定的缓存字符串等)。它通常工作得很好,只要库没有安装在奇怪的地方。它的工作方式是,当您运行 cmake 时,它​​会为您指定的几乎任何平台生成一个构建脚本/配置,然后您使用它来编译您的代码。它可以生成 makefile(类 Unix 或 windows)、CodeBlocks 项目文件、Visual Studio 项目文件等。而且许多 IDE 还原生支持 cmake 项目。

我希望我能推荐一个替代方案,只是为了听起来不那么偏向于 cmake,但我还没有听说过任何能真正与它相比的方案,尤其是为了定位外部依赖项和使用不同平台。我猜 Boost.Build也很体面。

关于c++ - 如何以独立于系统的方式将库添加到项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14617823/

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