如何在 GCC 搜索路径中包含头文件?

Posted

技术标签:

【中文标题】如何在 GCC 搜索路径中包含头文件?【英文标题】:How to include header files in GCC search path? 【发布时间】:2010-11-01 16:04:12 【问题描述】:

我在示例文件中有以下代码:

#include "SkCanvas.h"
#include "SkDevice.h"
#include "SkGLCanvas.h"
#include "SkGraphics.h"
#include "SkImageEncoder.h"
#include "SkPaint.h"
#include "SkPicture.h"
#include "SkStream.h"
#include "SkWindow.h"

但是,此代码位于 /home/me/development/skia 内的多个文件夹中(包括 core/animator/images/ports/svg/ 等等。)

如何让 GCC 识别这条路径?

【问题讨论】:

***.com/questions/558803/… 【参考方案1】:

试试gcc -c -I/home/me/development/skia sample.c

【讨论】:

很高兴在这里看到这个答案。值得一提的另一点是,当您有许多“.c”源文件时,有必要在命令行本身中指定每个文件。您不能只使用 -I 来指定所有源文件都在某个目录中。 如果header和源在同一目录下,是否需要特殊的include?无论哪种方式我都无法编译我的代码,我不确定问题是什么 根据this answer 的类似问题,gcc 不会自动在子目录中搜索不同的头文件。相反,pkg-config 可以产生正确的-I 选项? -I-L有什么区别? @EdwinPratt 也许你的意思是说-L 告诉 GCC 在哪里查找 以包含二进制库(由-l 指定)。 -I 告诉 GCC 在哪里寻找要包含的头文件。【参考方案2】:

当您不控制构建脚本/过程时,使用环境变量有时会更方便。

对于 C 包括使用 C_INCLUDE_PATH

对于 C++,包括使用 CPLUS_INCLUDE_PATH

查看link 了解其他 gcc 环境变量。

MacOS / Linux 中的使用示例

# `pip install` will automatically run `gcc` using parameters
# specified in the `asyncpg` package (that I do not control)

C_INCLUDE_PATH=/home/scott/.pyenv/versions/3.7.9/include/python3.7m pip install asyncpg

Windows 中的使用示例

set C_INCLUDE_PATH="C:\Users\Scott\.pyenv\versions\3.7.9\include\python3.7m"

pip install asyncpg

# clear the environment variable so it doesn't affect other builds
set C_INCLUDE_PATH=

【讨论】:

【参考方案3】:

-I 指令完成了这项工作:

gcc -Icore -Ianimator -Iimages -Ianother_dir -Iyet_another_dir my_file.c 

【讨论】:

以上是关于如何在 GCC 搜索路径中包含头文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt Creator 的 CMakeLists.txt 中包含头文件?

如何在 Makefile 中定义多个包含路径

在 PostgreSQL C 扩展中包含头文件

在作为朋友的类中包含头文件

在 C++ 中包含头文件时尖括号 < > 和双引号“”之间的区别? [复制]

不能在vsi2017的linux子系统中包含头文件