Makefileの書き方って、結構忘れがちですよね。 というわけで、メモ。 Linuxでアーカイブファイル(=静的ライブラリ(*.a))を作成するMakefileのサンプルです(C++用)。 # # Makefile for CC = g++ AR = ar SRCDIR = . OBJDIR = ./ INCD00 = ./ ARFLAG = crsv LFILE = libSample.a DEST = ./ CP = /bin/mv LIBS = CFLAGS = -Wall -O INCD = -I. -I$(INCD00) vpath %.h $(INCD00) vpath %.cpp $(INCD00) # SRCS=\ $(INCD00)Socket.cpp \ $(INCD00)SocketStream.cpp \ # OBJS=\ $(OBJDIR)Socket.o \
久しぶりに本っ気でメモ。 C++のMakefileの書き方。…汚いですが(苦笑 CC = g++ OPT = INCLUDE = OBJ = program.o \ program2.o \ # シェアードライブラリ libgallup.so : $(OBJ) ld -shared -no_archive -o libgallup.so $(OBJ) -lc # スタティックライブラリ libgallup.a : $(OBJ) ar r libgallup.a $(OBJ) ranlib libgallup.a # コンパイル .cpp.o: $(CC) -c $(OPT) $(INCLUDE) $< # お掃除君 clear: rm ./*.o rm ./libgallup.a rm ./libgallup.so
最低限だけ書くと次のようになる。 CXXFLAGS = -O2 -Wall LDFLAGS = -lm all: hello # In Windows, it may be "hello.exe" clean: $(RM) hello CXXFLAGSは、C++コンパイラに対する引数。Cコンパイラに対する引数はCFLAGS。最適化や警告、インクルードディレクトリや準拠する標準仕様の設定などを書く。 ここでは最適化オプション-O2と警告オプション-Wallをつけている。 LDFLAGSは、リンカに対する引数。ライブラリディレクトリやリンクしたいライブラリを書く。 ここではmath.hを使うため、-lmをつけてlibm.aをリンクしている。 allは、デフォルトで実行されるターゲット(といってもallという名前だからではなく、先頭にあるからだが)。ここでは実行ファイルhelloをビルドしている
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く