如何让 cc 查看头文件的 /usr/local/include

How to make cc look into /usr/local/include for header files

我在安装一些依赖于它们自己的 C 库的 python 模块时遇到了这个问题。问题是,cc 根本没有在 /usr/local/include 中查找头文件。我通过添加 /usr/local/include 作为外部包含目录之一使其适用于其中一个(认为这是模块的问题)。

然后,为了测试,我写了一个简单的 hello.c 文件并添加了 #include "fftw3.h" / #include <fftw3.h> 如果我没有明确添加 -I/usr/local/include 编译失败.

我在 ~/.bash_profile 中添加了一行以将包含目录路径导出到 $PATH;也没用。

所以,我的问题是,如何让 cc/usr/local/include(或者,就此而言,在任何自定义目录)中查找头文件而不传递 -I旗帜?

仅供参考:我正在使用 macbook pro 运行 OSX 10.11

如果您使用的是 GCC,那么您可以使用三个环境变量:

  • CPATH
  • C_INCLUDE_PATH
  • CPLUS_INCLUDE_PATH

看看here.

编辑:既然你指定你正在使用 OS X(因此 Clang),它们也应该被支持,看看最后的广告 here。让 Clang 模仿 GCC 规范只是为了提高兼容性的情况并不少见。

我认为您应该花一些时间来了解构建系统。例如 gnu make。在这里,看这个:

CC = gcc
CFLAGS = -Wall
DEPS = primes.h
OBJ = go.o primes.o

%.o: %.c $(DEPS)
        $(CC) $(CFLAGS) -c -o $@ $<

go: $(OBJ)
        gcc $(CFLAGS) -o $@ $^

这给你:

  • 可以自由添加所需的任何编译器。在你的情况下是 cc,在这个例子中是 gcc。
  • 使用 cflags 来控制调整编译器 - 在示例中 -Wall 将打开警告
  • 使您的构建工作可重现
  • 随着应用程序的增长,准备具有复杂编译规则的配方

可获得更多信息 here