为何GNU Make不为目标other_file生成文件?
GNU Make 依赖目标未创建导致重复执行的问题解决
问题根源在于GNU Make的核心逻辑:它通过检查目标文件是否存在、以及目标与依赖的时间戳差异,来判断是否需要重新执行目标命令。
你的Makefile中,other_file目标仅执行了echo输出,但没有创建名为other_file的实际文件。每次运行make时,系统找不到other_file这个依赖文件,就会判定该目标需要重新执行,进而触发some_file目标也重复执行。
只需给other_file目标的命令添加touch other_file,让它生成对应的文件即可解决:
some_file: other_file echo "This will always run, and runs second" touch some_file other_file: echo "This will always run, and runs first" touch other_file
修改后第一次运行make,会依次执行other_file和some_file的命令并创建对应文件;后续再运行make时,make检测到两个文件都存在且无更新,会直接提示make: 'some_file' is up to date.,不会重复执行命令。
内容的提问来源于stack exchange,提问作者Jane
相关产品推荐
相关产品推荐

