代码之家  ›  专栏  ›  技术社区  ›  Daniel Walker

使忽略include指令

  •  0
  • Daniel Walker  · 技术社区  · 5 年前

    token_check: token_check.o $(STATIC_LIBRARIES)
        $(CC) -o $@ $^
    
    %.o: %.c pipeline/*.h compiler/*.h
        $(CC) $(COMPILER_FLAGS) -I./pipeline -I./compiler -c $<
    

    但是,当我跑的时候 make ,实际运行的命令是

    cc -c -o token_check.o token_check.c
    

    我得到了错误

    token_check.c:3:10: fatal error: scanner.h: No such file or directory
        3 | #include "scanner.h"
          |          ^~~~~~~~~~~
    compilation terminated.
    make: *** [<builtin>: token_check.o] Error 1
    

    为什么我的 -I 指令被忽略?

    编辑:

    我检查了,我在管道和编译器中都有头文件。

    %.o: %.c pipeline/*.h compiler/*.h
        echo blah
    

    然后跑

    make token_check.o
    

    0 回复  |  直到 5 年前
        1
  •  1
  •   Renaud Pacalet    5 年前

    很可能make使用的是它的隐含规则,而不是你的规则。很可能是因为你的模式规则不适用。其中一个原因可能是您没有任何头文件 pipeline .