在Makefile中得到自己所在的目錄

Makefile 可能會以這樣的方式被調用:
make -f some_dir/Makefile all

這種情況下, Makefile本身裏面的命令不能對當前目錄作出假設.
GNU make手冊裏介紹了一個叫
MAKEFILE_LIST的變量, 它是個列表變量, 在每次make讀入一個make文件時, 都把它添加到最後一項, 這樣:

在Makefile的最開頭, 通過訪問這個變量的最後一個元素, 就能得到讀入的文件名, 對於上面的例子, 是
some_dir/Makefile


pes_parent_dir:=$(shell pwd)/$(lastword $(MAKEFILE_LIST))
pes_parent_dir:=$(shell dirname $(pes_parent_dir))
pes_parent_dir:=$(shell dirname $(pes_parent_dir))

第一行將得到一個完整路徑名.
第二行通過命令dirname 去掉 Makefile部分.
第三行得到其父目錄.

這個辦法只對GNU Make有用.



http://man.linuxde.net/dirname

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章