尝试将名为P18298_ca.sub的文件夹中的所有.cc文件编译为P18298_ca.cmp中的.exe文件。我使用包含源目录和目标目录的目录中的make命令进行编译。错误读取:
make: * 没有规则来制作目标P18298_ca.cmp/00a5bffb6a4792d7bcaed90ff6d3ca88-WA.exe', needed by
main.exe'。停止。
这是我使用的makefile代码
CPP_FILES := $(wildcard P18298_ca.sub/*.cc)
OBJ_FILES := $(patsubst P18298_ca.sub/%.cc,P18298_ca.cmp/%.exe,$(CPP_FILES))
LD_FLAGS := ...
CC_FLAGS := ...
main.exe: $(OBJ_FILES)
g++ $(LD_FLAGS) -o $@ $^
obj/%.exe: src/%.cc
g++ $(CC_FLAGS) -c -o $@ $<
答案 0 :(得分:0)
二进制文件是从*.obj
文件构建的,而不是从*.exe
文件构建的。此外,宏中的目录和默认规则必须相同。将Makefile中的这些行更改为
OBJ_FILES := $(patsubst P18298_ca.sub/%.cc,P18298_ca.cmp/%.obj,$(CPP_FILES))
P18298_ca.cmp/%.obj: P18298_ca.sub/%.cc
g++ $(CC_FLAGS) -c -o $@ $<