0

尝试将名为 P18298_ca.sub 的文件夹中的所有 .cc 文件编译为 P18298_ca.cmp 中的 .exe 文件。我从包含源目录和目标目录的目录中使用 make 命令进行编译。使错误读取:

make: *没有规则来制作目标P18298_ca.cmp/00a5bffb6a4792d7bcaed90ff6d3ca88-WA.exe', needed bymain.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 $@ $<
4

1 回答 1

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 $@ $<
于 2013-02-19T12:49:46.160 回答