我来自支持包管理器的编程环境,在安装和使用默认项目中没有包含的库时遇到了很多不适。
例如,#include <threads.h>会触发错误threads.h file not found。我发现编译器通过发出gcc -print-prog-name=cpp -v来查找/Library/Developer/CommandLineTools/usr/include/c++/v1中的头文件。我不确定这是否是一个完整的文件夹列表?我如何找到默认找不到的那些?我在OSX上,但Windows解决方案也是理想的。
发布于 2019-11-13 02:08:46
这个问题实际上并没有说明您是在构建自己的项目,还是在构建其他人的项目,也没有说明您是在使用IDE还是某个构建系统。我将尝试给出一个适用于大多数场景的通用答案。
但首先,它是头文件,而不是库(顺便说一句,这是一种不同的痛苦)。您需要显式地使它们可供编译器使用,除非它们驻留在标准搜索路径上。遗憾的是,有时需要大量的手动工作,特别是当您需要构建一个具有大量依赖项的第三方项目时。
我不确定这是否是一个完整的文件夹列表?
找出编译器的标准包含路径可能很棘手。这里有一个带有一些提示的问题:What are the GCC default include directories?
如何找到默认找不到的?
它们可能在您的计算机上,也可能不在您的计算机上。如果是,你就得找出它们的位置。否则,您必须弄清楚它们属于哪个库,然后下载并解压缩(可能还会构建)它。无论采用哪种方法,您都必须在IDE中指定该库的头文件的路径(或Makefile,或您使用的任何文件)。哦,您还需要确保库版本与项目所需的版本相匹配。有趣的!
在macOS上,您可以使用第三方程序包管理器(如brew)来处理库安装。
pkg-config在macOS上不可用,除非您从第三方安装它。
如果您正在构建自己的项目,一个更好的解决方案是使用CMake及其find_package command。但是,只有CMake支持的库才能通过这种方式被发现。幸运的是,他们支持的库集合非常广泛,您可以制作自己的find_package脚本。此外,CMake是跨平台的,它可以为您处理版本控制。
https://stackoverflow.com/questions/58788152
复制相似问题