2009-11-16 88 views
3

我正在爲移動設備(Windows Mobile 6和Android)設計跨平臺2D引擎。我的Windows版本已經準備就緒,但我仍然需要確保Android上提供相同的功能。Makefiles:從一個目錄獲取.cpp,並將編譯好的.o放到另一個目錄中

我想要的是一個Makefile在項目的根和幾個Makefile的項目本身和測試應用程序。

Makefile 
---Engine 
------Makefile 
------src 
------bin 
------intermediate 
---Tests 
------TestOne 
---------Makefile 
---------src 
---------bin 
---------intermediate 
------TestTwo 
---------Makefile 
---------src 
---------bin 
---------intermediate 

我立足於以下Makefile我嘗試:

include ../makeinclude 

PROGS = test1 
SOURCES = $(wildcard *.cpp) 

# first compile main.o and start.o, then compile the rest 
OBJECTS = main.o start.o $(SOURCES:.cpp=.o) 

all: $(PROGS) 

clean: 
    rm -f *.o src 

test1: $(OBJECTS) 
    $(LD) --entry=_start --dynamic-linker system/bin/linker -nostdlib -rpath system/lib -rpath $(LIBS) -L $(LIBS) -lm -lc -lui -lGLESv1_CM $^ -o ../[email protected] 
    acpy ../$(PROGS) 
.cpp.o: 
    $(CC) $(CFLAGS) -I $(GLES_INCLUDES) -c $*.cpp $(CLIBS) 

不過,我不太會用這些東西。我想要的是將文件夾中的.cpp文件編譯爲.o文件,並將它們放在intermediate文件夾中,最後將.o文件編譯爲編譯後的exe文件,並將其放入bin文件夾中。

我已經成功地得到清潔這樣的工作:

cd intermediate && rm -f *.o 

但是,我不能讓它檢索的.cpp的,編譯它們並把它們在intermediate文件夾中。

我看了其他幾個Makefiles,但沒有做我想做的事情。

任何幫助表示讚賞。

+0

請指定「make」標記而不是「makefile」。更多信息:http://meta.stackexchange.com/questions/24030/why-do-they-specify-makefile-tag-instead-of-make/26567#26567 – 2009-11-18 06:45:31

+0

嗯,我*是一個小白這些事情。 :P – knight666 2009-11-18 13:41:18

回答

8

有做到這一點的方法不止一種,但最簡單的就是在TestOne運行,使得中級/ foo.o的出來的src/Foo.cpp中和test1的出中級/ foo.o的的,是這樣的:

 
# This makefile resides in TestOne, and should be run from there. 

include makeinclude # Adjust the path to makeinclude, if need be. 

PROG = bin/test1 
SOURCES = $(wildcard Src/*.cpp) 

# Since main.cpp and start.cpp should be in Src/ with the rest of 
# the source code, there's no need to single them out 
OBJECTS = $(patsubst Src/%.cpp,Intermediate/%.o,$(SOURCES)) 

all: $(PROG) 

clean: 
    rm -f Intermediate/*.o bin/* 

$(PROG): $(OBJECTS) 
    $(LD) $(BLAH_BLAH_BLAH) $^ -o ../[email protected] 

$(OBJECTS): Intermediate/%.o : Src/%.cpp 
    $(CC) $(CFLAGS) -I $(GLES_INCLUDES) -c $< $(CLIBS) -o [email protected] 
+0

謝謝! :D 這正是我所需要的。我喜歡makefile(遠遠超過Visual Studio的vcproj),但它們可能非常難以設置。 :( – knight666 2009-11-16 21:54:37

+0

我也喜歡它們,但是它們有一些嚴重的缺點和很長的學習曲線......因爲我沒有真正測試過這個,所以有一個錯誤。 – Beta 2009-11-16 22:12:19

相關問題