我有一个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