關於shell Makefile相關的一些記錄

2021-06-17 15:21:12 字數 1239 閱讀 7314

20130727工作中遇到的問題

問題背景:需要把產品定義標頭檔案裡面的產品定義取出來,然後按照產品定義分模組編譯,shell裡面做的工作主要是從product_type.h提出產品的定義,然後把產品定義export到環境變數,供makefile使用,makefile根據產品定義傳各個模組的編譯巨集-d***_mod_inc到gcc

cur_dir=`pwd`

product_typedef_file=$cur_dir/foo/include/product_type.h

product_type_def=switch

get_product_type()

#bash 的寫法,獲取字串

#tmp=$line[0,7]   #zsh 的寫法,獲取字串

#$         #bash, zsh 都支援 求字串長度

tmp=$line[0,7]

if [[ $tmp = $define ]]; then

let "count = $count + 1"            # 統計含"#define"的行數

if [ $count -eq 3 ]; then

product_type_def=$line[8,$]

break

fifi

done < $product_typedef_file

}get_product_type

echo product_type_def: $product_type_def

# 新增到環境變數,以備makefile取用

export product_type_def

問題在makefile中驚現了!!!

在makefile中用

ifeq (product_foo,  $(product_type_def))

cflags += -dmod_inc_snmp

endif

來對cflags賦值,傳入編譯巨集。但是cflags始終不能賦值!! 而我把$(product_type_def) echo出來,是和product_foo一致的!!!實在找不到原因

後面採用了另一種方法就解決了,但是沒有搞清楚原因,方法如下:

ifeq ($(findstring product_foo, $(product_type_def)), product_foo)

cflags += -dmod_inc_snmp

endif

有人能告訴我為什麼????!!!

shell,makefile列印變數的不同

shell列印變數不需要用 否則報錯 dir var echo dir 結果 未找到命令 正確寫法 dir var echo dir 結果 var makefile列印變數需要,若變數只有乙個字母,加不加 或 無所謂,若對於多於乙個字母,必須加 或 否則列印的結果會有問題。l joan all ec...

關於程式關於世界

首先,在學了1年多的軟體設計的基礎上,問下自己 程式是什麼?業務需求是什麼?程式有什麼用?什麼是演算法?什麼是資料庫?或許每個人的理解不同,會給出不同的答案。那麼自己的理解 程式是乙個讓計算機工作的流程,在程式寫好之後,計算機就會按照,程式設計師定義好流程在執行。其實很多時候,乙個程式的好壞,在於乙...

關於血液關於軟體

1 自然沉降法 將血袋垂直吊掛於4 2 冰箱內,使紅細胞自然下沉1 3d,或將血袋呈70 80 角立於冰箱,需用時,用一次性分漿器分出血漿,制得濃縮紅細胞。2 洗滌法 一般用生理鹽水反覆洗滌3 6次。經洗滌的紅細胞,除白細胞和血小板減少外,血漿蛋白也極少,紅細胞中殘存的血漿蛋白含量約為原總蛋白的1 ...