通过编译器环境变量或 C 和 C++ 中的命令行标志指定库路径?

Posted

技术标签:

【中文标题】通过编译器环境变量或 C 和 C++ 中的命令行标志指定库路径?【英文标题】:Specify library path via compiler environment variables or command line flags in C and C++? 【发布时间】:2016-05-28 22:32:44 【问题描述】:

在项目之外使用库时,例如boost 或Guidelines Support Library,我们应该如何指定与该库相关的路径?

添加编译器使用的LIBRARY_PATHCPLUS_INCLUDE_PATH环境变量的路径。

定义一个环境变量(例如GSL_PATH)然后 在每个项目的makefile中添加-L-isystem标志。

对此有最佳实践吗?每种方法的优点和缺点是什么?考虑在其他系统上编译和使用项目的需要。

由于各种原因,这些库安装在自定义路径中

【问题讨论】:

这是主观的,但是——我强烈建议使用标志。标志是显式的,环境变量调试起来更烦人。如果您使用标志,您可以从 make 调用中复制命令并在终端窗口中运行它。使用环境变量,你不能。我目前正在使用一个在工作中使用大量环境变量的构建系统,这非常痛苦。 【参考方案1】:

您可以使用 cmake 来配置您的项目

然后用 cmake 找到 boost 和 gsl

https://cmake.org/cmake/help/v3.2/module/FindGSL.html https://cmake.org/cmake/help/v3.0/module/FindBoost.html

Example for boost

【讨论】:

以上是关于通过编译器环境变量或 C 和 C++ 中的命令行标志指定库路径?的主要内容,如果未能解决你的问题,请参考以下文章

vs2015写c++不是内部或外部命令,也不是可运行的程序或批处理文件

VScode配置c或c++环境

c语言中的extern是啥,有啥作用啊?

C和C++ 变量内存

代码中的软件工程

shell学习