Top/Prog/make

目次

自動変数

自動変数意味備考
$@ターゲットのファイル名
$%ターゲットファイルがアーカイブメンバだったときのターゲットメンバ名
$<最初の依存するファイル名
$?ターゲットより新しい全ての依存ファイル名
$^全ての依存するファイル名
$+Makefile と同じ順番の依存するファイル名
$*サフィックスを除いたターゲット名

デバッグシンボルの分離

目的

Makefile の実施例

SHELL = /bin/sh

PROG = OOO
PROG_SYMBOL = $(PROG).sym

CXXFLAGS  = \
	-Wall \

LDFLAGS  = \
	-lstdc++ \



CXXFLAGS_DEBUG = -ggdb -D_DEBUG_
CXXFLAGS_RELEASE = -O2

LDFLAGS_DEBUG = 
LDFLAGS_RELEASE = 



SRCSCPP = \
	a.C \
	b.C \
	c.C \
	main.C \


SRCS =  $(SRCSCPP)

OBJCPP  = $(SRCSCPP:.C=.o)
OBJS =  $(OBJCPP)

# Rules & Program stuff
MAKE    = make
CXX     = g++
CPP     = g++ -E
RM      = /bin/rm
RMF     = $(RM) -f
CP      = /bin/cp
AR      = /usr/bin/ar
ARQ     = $(AR) -q
STRIP   = /usr/bin/strip
OBJCOPY = /usr/bin/objcopy
OBJCOPY_ONLY_KEEP_DEBUG = $(OBJCOPY) --only-keep-debug

ROOT_DEV = CURRENT


all:
	@echo "WARNING: Available make target is: dbg rel clean";
dbg: build-dbg strip-symbol
rel: build-rel strip-symbol
clean :
	$(RMF) $(OBJS) $(PROG) $(PROG_SYMBOL)


build-dbg: LDFLAGS += $(LDFLAGS_DEBUG)
build-dbg: CXXFLAGS += $(CXXFLAGS_DEBUG)
build-dbg: $(PROG)

build-rel: LDFLAGS += $(LDFLAGS_RELEASE)
build-rel: CXXFLAGS += $(CXXFLAGS_RELEASE)
build-rel: $(PROG)

$(PROG) : $(OBJS)
	$(CXX) -o $(PROG) $(OBJS) $(CXXFLAGS) $(LDFLAGS)

strip-symbol: $(PROG)
	@echo "Stripping symbols"
	$(OBJCOPY_ONLY_KEEP_DEBUG) $(PROG) $(PROG_SYMBOL)
	$(STRIP) $(PROG)

関数・制御

call

foreach

info

subst

分岐

全ての変数の値を知る

シェルコマンドの結果を得る

参考リンク


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-24 (金) 23:03:03