日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Makefile中的变量和shell变量

發布時間:2025/4/14 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Makefile中的变量和shell变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們在寫makefile時 多多少少會用到shell腳本, 對于變量的在shell中的使用有一些要注意的細節。讓我們從一個簡單的makefile來看看。
注意makefile中一定要有一個目標,且一定要有一個終極目標,若想要有多個目標應該設立一個偽目標。如下:

all: hello hello2 hello3hello: hello.cgcc .... hello2: hello2.cgcc ... hello3: hello3.cgcc ...
  • shell變量定義和使用:
NAME=hello #這里一定不要有空格 hello可以加上""'' 若定義的值有空格 則要加上""'' echo $NAME #這里使用變量時 要加上$ 也可以${NAME} 但是不能$()這個表示執行里面的命令
  • makefile中的變量定義:
HHH=hello #方式一 ZZZ = hello #方式二 all:echo $HHH #這樣輸出并不能輸出HHH的值 Aecho $ZZZ #同上echo $(HHH) # 輸出hello Becho $(ZZZ) # 輸出hello 這里可以看到有別與shell變量定義。echo ${HHH} # 輸出hello Cecho ${ZZZ} # 輸出helloecho $$HHH # 輸出空 #$$這種方式是shell中使用makefile中定義的變量 這是一個command line。 D echo $$ZZZ # 輸出空if [ -n "${HHH}" ];then echo "OK";fi; #這里正確輸出OK Eif [ -n "${ZZZ}" ];then echo "OK";fi; # 正確輸出OKif [ -n "$(HHH)" ];then echo "OK";fi; # 正確輸出OK Hif [ -n "$(ZZZ)" ];then echo "OK";fi; # 正確輸出OKif [ -n "$HHH" ];then echo "OK";fi; # 變量名不正確 Jif [ -n "$ZZZ" ];then echo "OK";fi; # 變量名不正確if [ -n "$$ZZZ" ];then echo "OK";fi; #沒有輸出 Kif [ -n "$$HHH" ];then echo "OK";fi;#沒有輸出if [ -n $$ZZZ ];then echo "OK";fi; #輸出OK Lif [ -n $$HHH ];then echo "OK";fi;#輸出OK

我認為makefile的變量定義使用就像是c/c++中的宏的使用方式 只是替換而已
1. 情況A中: echo $HHH 是優先于第一個字符結合去找$H變量 但是這里沒有H定義 所以A這種情況 就是 echo HH 會輸出HH
2. 情況BC中:正確的使用方式
3. 情況D中:變量名變為$HHH 這樣的變量名為空
4. EH 中: 正確
5. J中$HHH 變為 HH
6. K 因為沒有定義$HHH這個變量
7. L 正確方式 與D的差別就是這句是shell D是command
以上是結合實際情況的個人理解

總結就是 makefile變量定義可以有空格, 使用變量時用$() 若在shell中使用makefile中定義的變量時,要使用$$ 并且一定不要使用“”和‘’。

?

轉載于:https://www.cnblogs.com/MaAce/p/7755706.html

總結

以上是生活随笔為你收集整理的Makefile中的变量和shell变量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。