【问题标题】:Makefile vpath not working for header filesMakefile vpath 不适用于头文件
【发布时间】:2012-02-25 18:11:11
【问题描述】:

我试图在我的 Makefile 中使用 vpath 来避免在每个源文件前加上目录名。但我无法让它正常工作。

这是 Makefile:

CC=gcc -Wall

vpath %.h include
vpath %.c src 

all: main.c Event.o Macros.h
        $(CC) $< Event.o -o test/a.out  

Event.o: Event.c Event.h Macros.h
        $(CC) -c $< -o $@

src 目录被正确包含。即 gcc 找到 Event.c 文件。但 Event.h 和 Macros .h 都不是。我在 gcc 中收到一个错误,说编译 Event.c 时没有找到这两个文件。

我尝试将我的 C 文件中的 #include 指令一次更改为其中的每一个。

#include "Event.h" /* doesnt work */
#include <Event.h> /* doesnt work */
#include "../include/Event.h" /* works */

你能帮我解决这个问题吗?我真的想避免在每个源文件之前使用目录名,因为我的实际 Makefile 比这大。

【问题讨论】:

    标签: c++ c gcc makefile


    【解决方案1】:

    vpath 指令仅控制 Make 如何查找依赖项;它不会以任何方式影响 GCC 的工作方式。如果你在其他目录中有头文件,你需要明确地告诉 GCC -I:

    INCLUDE := include
    
    $(CC) -I$(INCLUDE) $c $< -o $@
    

    【讨论】:

    • 有没有办法查看 GCC 根据项目中的包含创建的解析路径? -M -MG 做我想做的事,即忽略错误,但不显示解析的路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    相关资源
    最近更新 更多