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

时间:2013-03-22 12:12:46

标签: c makefile gnu-make

       gcc main.c -o main -I include 

我正在创建一个小的c应用程序,其中我的所有源文件都在src目录中,而所有头文件都在include目录中,所有常见文件都在公共目录中。所有这三个目录都在一个名为“app”目录的目录下以及main.c.现在我正在尝试运行main.c,其中包含#include指令包括来自include和函数调用的头文件,以及common和src目录中的.c文件。我正在使用-I但它仅对一个目录路径指示有用。 如何告诉编译器同时查看src common和include目录来解析调用。         请使用gcc编译时,建议我使用命令或make文件包含多个目录的路径。

1 个答案:

答案 0 :(得分:3)

允许多个-I选项。来自Options for Directory Search -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