如何在 Linux 上的 C 中包含来自多个目录的文件?

0 c makefile gnu-make

       gcc main.c -o main -I include 
Run Code Online (Sandbox Code Playgroud)

我正在创建一个具有以下目录结构的小型 c 应用程序:

应用=>

  • => src(一个目录,包含所有源文件)
  • =>包含(一个目录,包含所有头文件)
  • => common(一个目录,包含所有公共文件)
  • => main.c

现在我正在尝试运行包含#include指令的main.c,以将头文件从包含目录和函数调用包含commonsrc目录中的.c文件中。我正在使用-I选项,但它仅对一个目录路径指示有用。编译器将如何在所有srccommoninclude目录中查找以解析调用。请建议我在使用gcc编译时提供一个命令或制作文件以提供多个目录的路径。

hmj*_*mjd 5

-I允许多个选项。目录搜索选项 中的-I选项说明指出:

将目录 dir 添加到要搜索头文件的目录列表的头部。这可用于覆盖系统头文件,替换您自己的版本,因为在系统头文件目录之前搜索这些目录。但是,您不应使用此选项添加包含供应商提供的系统头文件的目录(为此使用 -isystem)。如果您使用多个 -I 选项则按从左到右的顺序扫描目录;标准系统目录紧随其后。

例如:

gcc main.c -o main -Iinclude -Isrc/include -Icommon/include

请注意,如果main.c使用在另一个.c文件中实现的函数,则其他.c文件也需要编译并链接到最终程序二进制文件中。例如:

gcc main.c src/another.c -o main -Iinclude -Isrc/include -Icommon/include