我有一個Makefile以下邏輯:編程選擇子的makefile運行make時包括
ifdef INCLUDE_FILE
$(shell cp $(INCLUDE_FILE) include.make)
else
$(shell cp -n default.make include.make)
endif
include include.make
預期的行爲是:
- 如果一個人只是運行
make
和include.make
存在,包括include.make
。否則,將默認文件複製到include.make
然後包括在內。 - 如果其中一個運行
make INCLUDE_FILE=myinclude.make
,則複製幷包含myinclude.make
。
這似乎很好地工作,以便生成文件自定義(編譯標誌等)在include.make
,這將持續存在,如果一個做類似
$make INCLUDE_FILE=myinclude.make
$...
$make
,但也讓新用戶只需鍵入make
和請參閱默認行爲。
我的問題是
- 這是好/標準(GNU)生成文件的做法?
- 是否存在嚴重的可移植性問題? [也就是說,依靠
cp
這樣危險嗎?] - 有沒有更好的替代方法來實現類似的行爲?
這非常接近我想要的行爲,除了我相信如果我運行'make INCLUDE_FILE = myinclude.make; ... 工作工作工作 ..; make',第二個'make'將包含'default.make'中的命令,而不是'myinclude.make'中的命令。也就是說,我想'include.make'作爲永久配置存在,它(至少天真地)似乎需要一些與文件系統的交互。 – 2015-02-24 15:25:55