【问题标题】:How to include header files in GCC search path?如何在 GCC 搜索路径中包含头文件?
【发布时间】: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 识别这条路径?

【问题讨论】:

标签: c++ gcc header


【解决方案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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-21
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多