我是makefiles的新手我在区分目标路径与make文件存在的位置时遇到了一些麻烦
这是我的Makefile
babel-ready:
make babel-install-preset module=es2015
make babel-install-preset module=stage-2
babel-install-preset:
npm install --save-dev babel-preset-$(module)
${CURDIR}/node_modules/.bin/json -I -f package.json -e 'if (!this.babel) this.babel = {}' ;\
${CURDIR}/node_modules/.bin/json -I -f package.json -e 'if (!this.babel.presets) this.babel.presets = []' ;\
${CURDIR}/node_modules/.bin/json -I -f package.json -e 'this.babel.presets.push("'$(module)'")' ;\
这里是目录结构:
- node_modules
- .bin/
- json
- Makefile
- packages/
- my-package/
- package.json
- package.json
我想以三种方式使用这个Makefile。
一种是指定这样的目标。
./ $ make babel-ready package=my-package
两个是在root package.json上运行它。
./ $ make babel-ready
第三个是在包中,只需运行命令。
./packages/my-package $ make -C ../../ babel-ready
我喜欢它,如果所有三个都可以使用相同的基本代码。
我继续使用cd
更改命令中的目录,但它一直让我搞砸了,因为一旦我cd
我无法访问make命令,并且必须使用make -C ${CURDIR}
但随后我无法访问正确的package.json
文件,所以看起来我无法正常工作。
答案 0 :(得分:0)
您似乎在最后一个示例中寻找make -f ../../Makefile babel-ready
。 -C
选项会丢失当前目录,就像您发现的那样。
(我不清楚您的命令是否正确使用${CURDIR}
,因此您可能需要进行其他调整。)