0
我有一個程序,它使用靜態或共享庫。現在,我要像做從一個代碼創建幾個項目在一個生成文件中
make static
或
make shared
編譯該項目在兩起案件。 我的Makefile看起來像
shared: main.o libresult.so
gcc -o shared main.o -L. -lresult -Wl,-rpath,.
main.o: main.c
gcc -c main.c
libresult.so: func.o
gcc -shared -o libresult.so func.o
func.o: func.c
gcc -c -fPIC func.c
static: main.o libresult.a
gcc -o static main.o -L. -lresult
main.o: main.c
gcc -c main.c
libresult.a: func.o
ar cr libresult.a func.o
func.o: func.c
gcc -c func.c
clean:
rm -f *.o *.a *.so static shared
關當然,終端給出了一些警告。它運作良好,但我不認爲 是多美麗的:)。如何讓它變得更好?
爲了提供一個替代方案,我認爲使用shell腳本提供的切換機制爲每個項目保留單獨的makefile文件更有意義。使用shell腳本作爲Make的前端提供了很大的權力,類似於'configure'腳本如何爲不同的體系結構設置額外的標誌,操作系統定義和包含等。您可以調用腳本作爲例如'./build a'和'./build b','./build clean'等。 – Zhro