2013-02-19 79 views
0

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

使:*没有规则,使目标P18298_ca.cmp/00a5bffb6a4792d7bcaed90ff6d3ca88-WA.exe', needed by main.exe'。停止。

下面是我用

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 [email protected] $^ 

    obj/%.exe: src/%.cc 
     g++ $(CC_FLAGS) -c -o [email protected] $< 

回答

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 [email protected] $< 
相关问题