私は1つのプログラムを持っており、静的ライブラリまたは共有ライブラリを使用しています。今私は2つの場合にプロジェクトをコンパイルする1つのコードから複数のプロジェクトを1つのメイクファイルに作成する
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
のように見えるコースオフ、端末はいくつかの警告を与えます。それはうまく動作しますが、私は考えていません 非常に美しいです:)。それをより良くするには?
main.o: main.c
gcc -c main.c
はそれらのいずれかの削除:
代替案を提供するには、シェルスクリプトによって提供される切り替えメカニズムを使用して、プロジェクトごとに別々のメイクファイルを作成する方が理にかなっていると思います。シェルスクリプトをフロントエンドとしてMakeを使用することは、多くの機能を提供し、異なるアーキテクチャー、オペレーティングシステムの定義とインクルードなどの追加フラグを設定するために 'configure'スクリプトがどのように機能するかと似ています。 './build a'と' ./build b'、 './build clean'などです。 – Zhro