Makefile 使管理文件位于不同的目录中
我有一个程序将一个更少的文件编译成CSS文件。我创建了一个通配符make target,它使用适当的参数调用Makefile 使管理文件位于不同的目录中,makefile,Makefile,我有一个程序将一个更少的文件编译成CSS文件。我创建了一个通配符make target,它使用适当的参数调用lessc,以在同一目录中创建CSS文件: %.css: %.less node_modules/less/bin/lessc node_modules/less/bin/lessc $< $@ 这很好用。但是,我想采用不同的目录结构: css/ |- foo.less |- foo.css css/ |- foo.css |- less/ |- foo.less
lessc
,以在同一目录中创建CSS文件:
%.css: %.less node_modules/less/bin/lessc
node_modules/less/bin/lessc $< $@
这很好用。但是,我想采用不同的目录结构:
css/
|- foo.less
|- foo.css
css/
|- foo.css
|- less/
|- foo.less
然而,我无法找到一种合理的方法来使用make在不同的目录中管理文件的创建(我特别希望避免不必要的重新编译)。如何更改目标以实现此行为?您只需要在前提条件中添加所需的前缀。剩下的就交给我吧
%.css: less/%.less node_modules/less/bin/lessc
node_modules/less/bin/lessc $< $@
%.css:less/%.less节点\u模块/less/bin/lessc
节点_模块/less/bin/lessc$<$@
%.css:less/%.less…
如果我想编译foo/bar.css怎么办?它将查找less/foo/bar.css,而它应该查找foo/less/bar.css。你确定吗?模式规则通常不是这样匹配的。那%.css:less/%.less
应该映射到foo/bar.css
到foo/less/bar.css,我相信。(这似乎适用于快速测试。)具体参见第二段(从“目标模式”开始)。对不起,你说得对。太好了,谢谢!