我正在编写一个makefile脚本,它应该能够解析由同一个makefile创建的文件。我使用以下代码来解析$(FileName)
文件。当我执行时,我会看到**cat: InputFile:No such file or directory**
。此代码适用于已存在的文件,但如果在运行make之前文件不存在则无效。您能否建议我如何解决此问题?提前谢谢。
片段 -
test_connection:
. . .
//Create file named $(Filename)
. . .
$(call generate_list,$(FileName))
define generate_list
$(eval FILE_DATA= $(shell cat $(DIR)/$1); \
$(foreach word, $(FILE_DATA), \
. . .
endef
答案 0 :(得分:0)
你的问题是你越界了。在运行任何规则体之前进行解析和处理。目标规则主体仅在此之后运行。因此,您无法在目标规则体中创建文件,并希望它可以在make上下文中使用(不使用包含的makefile,但我们将在一分钟内完成)。
解决这个问题的最简单方法就是将解析完全移出make,然后在shell(或其他)脚本中执行。如果您需要某些制作级决策等的内容,这显然不起作用。虽然。
另一种可能的解决方案是使用包含的makefile并利用以下事实:当make重建包含的makefile时,它将从头开始重新开始处理(然后从一开始就使该makefile的内容可用)。要做到这一点,你会:
include $(Filename)
行$(Filename):
目标以构建它test_connection
规则中的解析数据(我假设的一些makefile变量)执行您需要的操作