如何在 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 中包含头文件?