【发布时间】:2014-02-28 17:26:55
【问题描述】:
我正在尝试按照http://www.microhowto.info/howto/automatically_generate_makefile_dependencies.html 中描述的步骤自动生成与make 的依赖关系。对于源文件和目标文件都在同一个目录中的简单情况,提供的方法是有效的。但是,如果我有以下文件树:
- 源
- helloworld.cpp
- 制作文件
- bin
如果我使用以下 makefile:
CPPFLAGS += -MD -MP
BIN_DIR=../bin
SRC = $(wildcard *.c)
hello_world: $(SRC:%.c=$(BIN_DIR)/%.o)
$(LD) -o $@ $^
-include $(SRC:%.c=$(BIN_DIR)/%.d)
然后我收到此错误消息:
make: *** No rule to make target `../bin/helloworld.o', needed by `hello_world'. Stop.
并且没有生成 .d 文件。
据我了解,在尝试应用隐式规则生成../bin/helloworld.o 时出现问题,因为相应的源文件是helloworld.cpp,而不是../bin/helloworld.cpp。
是否可以使用不在同一目录中的两个文件来描述我想要一个隐式规则?
【问题讨论】:
-
是
hello_world还是helloworld?错误信息与 Makefile 不一致。
标签: makefile dependencies