2013-02-19 104 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] $< 
相關問題