2016-06-07 86 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},所以你可能需要額外的調整。)