如何在其他目录中包含.c文件中的头文件

Rob*_*lli 5 c compilation c-preprocessor

我在这个目录结构中工作

root: Code
|--src
    |--client
        |--client.c
    |--server
        |--server.c
    |--lib
        |--utility.c
|--include
    |--prototype.h
    |--utility_lib.h
Run Code Online (Sandbox Code Playgroud)

client.c文件中,我必须包含该utility_lib.h文件.

由于#include "-I../../include/utility_lib.h" 它不起作用,可能路线不正确.

有人可以帮帮我吗?

tei*_*vaz 6

只是

#include "../../include/utility_lib.h"
Run Code Online (Sandbox Code Playgroud)

-I 标志您应该只添加到编译器设置


Mat*_*ieu 5

您可以直接在代码中包含头文件:

// file client.c
#include "../../include/utility_lib.h"
Run Code Online (Sandbox Code Playgroud)

或者你可以告诉你的编译器在哪里可以找到头文件:

// file client.c
#include <utility_lib.h>
Run Code Online (Sandbox Code Playgroud)

当前目录为 时的编译命令client

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

当前目录为 时的编译命令src

gcc -c src/client.c -o client.o -I../include
Run Code Online (Sandbox Code Playgroud)


Bas*_*tch 2

更常见的方法是更改​​您的构建过程(例如编辑CFLAGS您的Makefile)以便通过

-I $TOPDIR/include/
Run Code Online (Sandbox Code Playgroud)

到你的编译器。在 a 内部,Makefile您可能会定义一些 make 变量TOPDIR=并将其用作$(TOPDIR)