2016-06-07 138 views
0

指定目标,我是新来的makefile我有一个有点麻烦区分目标路径相对于在make文件存在的makefile文件命令

这里是我的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)'")' ;\ 

这里的DIR结构:

- node_modules 
    - .bin/ 
    - json 
- Makefile 
- packages/ 
    - my-package/ 
     - package.json 
- package.json 

我想用三种方式使用这个Makefile。

一种是指定一个像这样的目标。

./ $ make babel-ready package=my-package 

二是在根package.json上运行它。

./ $ make babel-ready 

三是要在包中,只需运行命令。

./packages/my-package $ make -C ../../ babel-ready 

我想如果三个人都可以使用相同的基本代码。

我继续使用cd改变命令中的目录,但它使搞乱了我,因为一旦我cd我松访问make命令,并有能力使用make -C ${CURDIR}但后来我松散访问正确的package.json文件,所以看起来我不能得到任何工作。

回答

0

你似乎在最后一个例子中寻找make -f ../../Makefile babel-ready。像您发现的那样,-C选项丢失当前目录。

(不清楚你的命令是否正确使用${CURDIR},所以你可能需要额外的调整。)