为何Makefile中的ila目标总是重复执行?
为什么
ila步骤总是重复执行? 嘿,我一眼就瞅出问题所在了——你的ila目标每次都自动跑,根源在变量定义的引号上!
看你这段代码:
OUTPUT_ILA = "path/file"
Make会把这个变量的值原封不动当作目标文件名,也就是它会检查是否存在一个叫"path/file"(连引号一起算文件名的一部分)的文件。但你实际执行ila步骤后生成的文件是path/file(没有引号),这就导致Make每次都觉得目标文件不存在,自然会反复触发ila的执行逻辑。
修复方案
把变量定义里的双引号去掉就行:
OUTPUT_ILA = path/file
修改后,Make就能正确识别实际生成的文件了——只有当$(OUTPUT_SYN)更新,或者path/file本身不存在时,才会重新执行ila步骤,完美符合你的预期。
验证小技巧
如果想确认问题,可以试试这两个命令:
make -n ila:查看Make计划执行的命令,能看到它试图构建的目标是不是带引号的make -p:输出Make解析后的所有目标、依赖和规则,一眼就能看到带引号的目标问题
内容的提问来源于stack exchange,提问作者Fisher
相关产品推荐
相关产品推荐

