2012-07-25 32 views
0

我使用mingw32 gcc通過命令行編譯程序。隨着源文件的增加,我遇到了一些問題。首先,考慮下面的腳本:用MinGW32 GCC編譯。只告訴鏈接庫一次?

gcc -Wall -I"MyDir" -I"MyDir2" -L"MyLibDir" -L"MyLibDir2" -l lib1 -l lib2 -l lib3 -c file.c 
gcc -Wall -I"MyDir" -I"MyDir2" -L"MyLibDir" -L"MyLibDir2" -l lib1 -l lib2 -l lib3 -c file2.c 
gcc -Wall -I"MyDir" -I"MyDir2" -L"MyLibDir" -L"MyLibDir2" -l lib1 -l lib2 -l lib3 -c file3.c 
gcc -o myprog.exe file1.o file2.o file3.o 

現在,我不能只告訴gcc編譯目錄-I,鏈接器的目錄-L和鏈接庫-l只有一次,然後用相同的選項編譯第二和第三源文件而不必重新鍵入它們?像

gcc -define-options -Wall -I"MyDir" -I"MyDir2" -L"MyLibDir" -L"MyLibDir2" -l lib1 -l lib2 -l lib3 
gcc -Wall -c file1.c 
gcc -Wall -c file2.c 
gcc -Wall -c file3.c 
gcc -o myprog.exe file1.o file2.o file3.o 

回答

2

據我所知,不,你不能。但這就是爲什麼make和Makefiles是發明的:)我認爲this tutorial已經足夠讓你開始爲你的小型項目編寫一個體面的Makefile了。

PS:快速&骯髒的方式將只是寫一個簡單的bash腳本,將include目錄保存在一個變量中,但Makefiles在我看來是一個更好的選擇,因爲你不想重新發明輪子。

PS2:出於好奇,我發現確實有辦法做到這一點。你只需要定義一些環境變量。詳情請看這裏:How to add a default include path for gcc in linux?

+1

與鏈接教程nit:調用一個目標'all'沒有什麼特別的。除非對特殊變量「.DEFAULT_GOAL」的賦值改變了這個值,否則'make'認爲'.DEFAULT_GOAL'爲空時默認讀取第一個目標。請參閱http://www.gnu.org/software/make/manual/html_node/Special-Variables.html。 – 2012-07-25 09:30:34