0

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 $@ $<
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 に答える