Make抓頭檔案裡的變量 - Linux

Table of Contents

※ 引述《Damaged (被害者)》之銘言:
: 是這樣的 有個頭檔案叫 version.h
: #ifndef _VERSION_H_
: #define _VERSION_H_
: #define VERSION 0.1.16
應該是
#define VERSION "0.1.16"
: #endif
: 在makefile 裡想去抓取VERSION的數值( 0.1.16),然後存在一個變量裡
: (好比叫VERSION好了)
: 那請問要怎做呢?
: 試了很久還是不太行啊,對shell很不熟
: 有沒大大能幫一下的呢 謝謝

如果是我可能會先寫一個ver.mk:
.PHONY: all clean

all: ver

clean:
@rm ver ver.c

ver: version.h
@echo "#include <stdio.h>" > ver.c
@echo "#include \"version.h\"" >> ver.c
@echo "int main() {" >> ver.c
@echo "printf(\"%s\", VERSION);" >> ver.c
@echo "return 0;" >> ver.c
@echo "}" >> ver.c
@gcc -o $@ ver.c

Makefile內容則大概是:

tmp := $(shell make -f ver.mk)
VERSION := $(shell ./ver)

$(info the version is $(VERSION))


.PHONY: all clean

all:
@echo done

clean:
@make -f ver.mk clean


好處是每次version.h有更新就會自動重新編譯ver
而且可以支援像

#if 0
#define VERSION "0.1.16"
#else
#define VERSION "0.1.17"
#endif

這樣的寫法

--

All Comments

Skylar Davis avatarSkylar Davis2013-02-10
謝謝 不過好像有點太複雜了 0.0