避免 git 由于 Makefile 中的每个用户设置而导致的合并冲突

avoid git merge conflicts due to per-user settings in Makefile

我的 git 管理的项目在不同的主机上运行。 项目的依赖项(包括目录、第三方库;但不足以保证 autoconf 的大锤)在每个主机上的不同位置。 因此项目的 makefile 包含在每个主机上不同的设置。例如:

FST_DIR=/usr/local/include
FST_DIR=/home/user12345/openFST/src/include
FST_DIR=/home/user67890/tmp/include

当我git merge时,有什么好的方法可以阻止这些差异不断引起冲突?只需将这些设置移动到它们自己的文件中,包含在 makefile 中,被 git 忽略? (如果是这样,新手第一次尝试制作,文件不见了怎么办?)

(如果没有 git 或 makefile,可能会存在类似的问题。例如,一个 Visual Studio 项目,在多台 PC 上开发,每台 PC 都有自己的配置。)

是的,将配置移动到被 git 忽略的 include makefile。

当文件不存在以处理 "new user" 问题时,您可以让 make 提示用户输入文件中所需的值。

像这样。

include config.mk

config.mk:
        @echo 'Configuration file $@ not found. Creating...'
        @printf 'Value to set for FST_DIR: '; IFS= read -r dir && [ -n "$$dir" ] && printf 'FST_DIR=%s\n' "$$dir" > $@