我正在尝试从json文件生成一些php类,但是我已经将生成php的那一行改成了一个虚拟的echo语句,这样其他人就可以复制粘贴并测试,如果他们感到非常慷慨的话。
有两件事情需要添加到包含makefile的目录中:
- 一个名为PatientDbPath.json的虚拟依赖文件。 - 一个名为out的目录。
如果我有一个包含以下内容的makefile:
.SUFFIXES: .php .json
.json.php:
echo "HelloMe" > PatientDbPath.php
PatientDbPath.php: PatientDbPath.json
clean:
$(RM) PatientDbPath.php
当我运行make时,一切都正常;PatientDbPath.php被正确创建,并且下次运行make时,我会收到消息make:'PatientDbPath.php'已经是最新的
但是,我想在一个单独的目录中生成php文件,因此我更新了我的makefile如下:
.SUFFIXES: .php .json
.json.php:
echo "HelloMe" > out/PatientDbPath.php
out/PatientDbPath.php: PatientDbPath.json
clean:
$(RM) out/PatientDbPath.php
当我这样做时,Make告诉我make: Nothing to be done for 'out/PatientDbPath.php'
,尽管在out目录中没有PatientDbPath.php文件。
所以我想也许是后缀规则的问题,于是我创建了第三个makefile。
out/PatientDbPath.php: PatientDbPath.json
echo "Whatever" > out/PatientDbPath.php
clean:
rm out/PatientDbPath.php
这个很好,像第一个一样有效。有人能看出我第二个 makefile 做错了什么吗?
谢谢。
out/%.php : %.json
就解决了问题。我有一个后续问题。我需要为该目录中的每个 .json 文件创建单独的规则吗? - Ruan Mendesall:: $(patsubst %.json, out/%.php, $(wildcard *.json))
这将为从该目录中的每个 .json 生成的每个 php 文件添加依赖关系。 - Ruan Mendes