制作-自动生成的文件

问题描述

这是上下文: 我正在制作一个makefile,以便在每个版本中都创建一个.h,包括另一个将使用此标头的makefile。我无法编辑第二个。 使用所有取决于我的文件的目标,它会在第一次编译时创建丢失的MyHeader.h。问题是,当我重新编译时,不会重新生成标头... 我的makefile看起来像这样:
all: myHeader.h

myHeader.h:
    scriptToBuildMyHeader.sh

include obscureAndPrivateMakefile.make
一开始我也尝试使用.phony目标。结果相同:一旦创建,就不会在每次构建时都重新生成。 PS:我无法在make之前调用脚本。 某些makfile-Master大师有什么想法如何处理吗? 谢谢!     

解决方法

因为
myHeader.h
没有依赖性,所以一旦存在就永远不会重建。您可以通过创建从ѭ1到虚假目标的依赖项来解决此问题,例如:
forcebuild:
    # dummy; do nothing and don\'t create this file
.PHONY: forcebuild
myHeader.h: forcebuild
   scriptToBuildMyHeader.sh
但是,这将大大降低您的构建速度,因为每次都需要重新构建标头(以及包括它的任何源文件)。     ,麻烦在于,由于
myHeader.h
不依赖任何内容,因此它存在并且因此在第二个版本中是最新的。为了确保每次都构建它,它必须依赖于不存在的文件:
myHeader.h: .FORCE
        scriptToBuildMyHeader.sh

.FORCE:
名称\'
.FORCE
\'(有时是
FORCE
)通常使用。 如果使用GNU Make,则可以将“不存在”文件变成伪造目标:
.PHONY: .FORCE
这样做的好处是,即使您运行ѭ11(,(GNU)
make
也不会创建文件
.FORCE
-这会破坏标头的自动重建,因为该规则取决于实际上不存在文件actually6ѭ。     ,这是另一种可能的方法:
all: clean foo.txt

clean:
    rm foo.txt

foo.txt:
    echo > foo.txt
我在使用
echo > foo.txt
模拟标题的创建。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...