假設我有兩個文件。
文件資料/ A.mk:可以根據目標動態設置Makefile'include'嗎?
NAME=A
VERSION=1.0
文件資料/ B.mk:
NAME=A
VERSION=2.0
的Makefile文件可能看起來像:
BASE_DIR:=$(shell sh -c 'pwd')
include $(BASE_DIR)/profile/<**NOT_SURE_WHAT_TO_PUT_HERE**>.mk
A B:
@echo $(VERSION)
我想我想要的是根據make命令只能「源」或「包含」* .mk文件:
make A
或
make B
因爲我使用的名稱和版本在這兩個* .mk文件,我不能做一個「包括」兩* .mk文件。包含這兩個文件都會生成一個「覆蓋以前的分配」警告。
在一個shell腳本,該NOT_SURE_WHAT_TO_PUT_HERE將$ 1。有沒有一個變量/宏/我使用目標名稱來包含基於目標名稱的* .mk? (GNU Make 3.81,Ubuntu 13.04)
沒有理由手動調用shell來運行'pwd。 '$(shell pwd)'會起作用。這就是說這些都是必要的,因爲GNU make至少同時具有'$ PWD'和['$ CURDIR'](http://www.gnu.org/software/make/manual/make.html#index-g_t_0040code_007bCURDIR_007d -389)默認可用。 – 2014-08-27 19:35:51
請注意'$(PWD)'不是由make設置的;它是從父母的環境中繼承的。如果make的調用者沒有設置該變量,那麼它將不可用。你應該使用由make設置的'$(CURDIR)',因此它總是可用的。 – MadScientist 2014-08-27 23:49:21