目标依赖:Makefile no rule to make target错误
Target dependency: Makefile no rule to make target error
这是我的make文件 运行,
.PHONY: build
build: pre_build_script $(OUTPUTDIR)/%.cpp
$(OUTPUTDIR)/%.cpp: $(INTXTDIR)/%.txt
python.exe $(SOMEDIR)/somepythonscript.py $(INTXTDIR) $(OUTPUTDIR)
.PHONY: pre_build_script
pre_build_script:
pythonscript.exe $(PREBUILDDIR)
这是我得到的输出:
$ make build
pythonscript.exe $(SAMPLEDIR)
make: *** No rule to make target '../obj/CPP/%.cpp', needed by 'build'. Stop.
看起来我在某些 sytanx 上遗漏了,因为尽管声明了目标依赖项,但我还是收到了这个错误。有什么建议么?
这意味着 make
找不到名为 $(OUTPUTDIR)/%.cpp
的文件,这是第一条规则的先决条件。
您不能在这样的规则中的任何地方使用 %
作为通配符:
build: pre_build_script $(OUTPUTDIR)/%.cpp
它需要成为 pattern rule or a static pattern rule 的一部分。
您可以使用 $(wildcard $(OUTPUTDIR)/*.cpp)
获取完整的文件列表,但这是一种反模式(双关语)。您应该确切地知道哪些文件在哪些规则中使用,或者(更好地了解它并)创建一个通用模式规则。
第二个模式规则(一个使用 somepythonscript.py
)应该适用于单个源-目标文件对,$(INTXTDIR)/%.txt
-> $(OUTPUTDIR)/%.cpp
。该命令似乎处理目录中的所有文件,这不是增量的:即使只更新了一个文件,它也会重做所有工作。
这是我的make文件 运行,
.PHONY: build
build: pre_build_script $(OUTPUTDIR)/%.cpp
$(OUTPUTDIR)/%.cpp: $(INTXTDIR)/%.txt
python.exe $(SOMEDIR)/somepythonscript.py $(INTXTDIR) $(OUTPUTDIR)
.PHONY: pre_build_script
pre_build_script:
pythonscript.exe $(PREBUILDDIR)
这是我得到的输出:
$ make build
pythonscript.exe $(SAMPLEDIR)
make: *** No rule to make target '../obj/CPP/%.cpp', needed by 'build'. Stop.
看起来我在某些 sytanx 上遗漏了,因为尽管声明了目标依赖项,但我还是收到了这个错误。有什么建议么?
这意味着 make
找不到名为 $(OUTPUTDIR)/%.cpp
的文件,这是第一条规则的先决条件。
您不能在这样的规则中的任何地方使用 %
作为通配符:
build: pre_build_script $(OUTPUTDIR)/%.cpp
它需要成为 pattern rule or a static pattern rule 的一部分。
您可以使用 $(wildcard $(OUTPUTDIR)/*.cpp)
获取完整的文件列表,但这是一种反模式(双关语)。您应该确切地知道哪些文件在哪些规则中使用,或者(更好地了解它并)创建一个通用模式规则。
第二个模式规则(一个使用 somepythonscript.py
)应该适用于单个源-目标文件对,$(INTXTDIR)/%.txt
-> $(OUTPUTDIR)/%.cpp
。该命令似乎处理目录中的所有文件,这不是增量的:即使只更新了一个文件,它也会重做所有工作。