我在linux下有一个c++项目。我正在使用 GNU make 和 GCC
我有以下规则:
all: ...
version:
config:
rm -f config.h
@$(MAKE) --no-print-directory config.h
config.h:
# ..... create the file config.h here
使版本增加内部版本号。1.1-123,然后是 1.2-124 ... 等等。版本写在 config.h 文件中,并且 config.h 包含在项目的所有文件中。
现在的想法是在以下情况之一中重新构建 config.h: - 当发布程序版本时(而不仅仅是开发/测试) - 当它不存在时
所以我不想建立这种依赖关系:
all: config
config: version
因为这样配置文件将在每次 make 时重建,并且每个文件都将被重新编译,而不仅仅是更改的文件。所以我不想在开发时重新构建配置文件,但前提是我make release_version
现在这样做。可以说规则是:
release_version: config version all
问题是,当我这样做时,make release_version -j 3
它会同时生成所有 3 个目标(配置、版本、全部),这意味着该版本可能还没有准备好创建 config.h,那么 config.h 可能还没有准备好all
. 所以我必须做这个依赖:
release_version:全部全部:配置配置:版本
但仅在make release_version
执行时。如果make all
执行,我不想拥有这些依赖项。
也许我需要类似的东西:
release_version: version_release config_release all_release
all_release:配置 config_release:配置 version_release:版本