make・Makefile - 自動変数


 クラウディア


1. 自動変数
2. 拡張

1. 自動変数

 変数   意味  
$@ ターゲット。
$% ライブラリの構成指定中の要素を表します。というのがマニュアルの説明なのですがようわからんですな。
$< 必須項目の先頭。
$? ターゲットよりも後で更新された必須項目のすべてを、スペースで区切ったリストで表します。これもようわからんです。
$^ すべての必須項目をスペースで区切ったリストで表します。重複ファイルは取り除かれるそうです。
$+ $^と同様にすべての必須項目をスペースで区切ったリストで表します。が、これは重複ファイルは重複のままだそうです。
$* ターゲットファイル名の一部を表します。一部とはサフィックスを除いたファイル名を示すのが普通です。
という説明なのですが、カッコ書で(どのようにファイル名の一部を作り出すかは「パターンルール」で扱います)と説明されているように、いささか複雑です。

 これをわかっている範囲で書くならば

main.c
 というファイルがあって、コンパイルしてオブジェクトを作成する Makefile を書くならば

CC	= clang

target  : main.o
	$(CC) -o main main.o

.c.o	:
	$(CC) -c $< -o $@
 これは、くっきり動作します。

2. 拡張

 「D」と「F」というキーワードを用いて、前項の自動変数のうちのディレクトリとファイルの部分を取り出すことができます。  すなわち

/home/hoge/obj/piyo.o : /home/hoge/src/piyo.c
 というルールが存在するとき
シンボル  意味 
$(@F) piyo.o を示します。
$(<D) /home/hoge/src を示します


audiobook.jp
AbemaTV 無料体験
ベルリッツ
EaseUS
Amazonギフトカード
ハイスピードプラン
それがだいじWi-Fi
U-NEXT
健康サポート特集
ネットオークションの相場、統計、価格比較といえばオークファン
【usus ウズウズ】
アフィリエイトのアクセストレード
損保との違い
EMEET 1
TikTok Shop 【リピート用プログラム】
JETBOY
サウンドハウス
葬送のフリーレン Prime Video
薬屋の独り言
5G CONNECT
earthcar(アースカー)