首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Makefile:使用多行字符串作为命令的输入

Makefile:使用多行字符串作为命令的输入
EN

Stack Overflow用户
提问于 2014-12-31 00:40:21
回答 2查看 1.3K关注 0票数 0

我希望使用多行json编码的字符串作为makefile中命令的输入。现在,似乎没有任何东西传递给命令watchman-typescriptwatchman-debug

Makefile

代码语言:javascript
复制
.PHONY: typescript
typescript:
    tsc --target ES5 ts/main.ts

.PHONY: watch
watch:
    watchman watch .

define WATCHMAN_TYPESCRIPT_TRIGGER =
["trigger", "./ts", {
  "name": "tsTrigger",
  "expression": ["suffix", "ts"],
  "command": ["make", "typescript"]
}]
endef

.PHONY: watchman-typescript
watchman-typescript:
    watchman -j '$(WATCHMAN_TYPESCRIPT_TRIGGER)'

.PHONY: watchman-debug
watchman-debug:
    echo $(WATCHMAN_TYPESCRIPT_TRIGGER)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-31 02:06:47

虽然这在make本身看来是不可能的--最终将变量的每一行解释为食谱中的命令--但有一个解决办法:您可以将变量导出为shell变量,并在命令中引用该变量。这就是:

代码语言:javascript
复制
define WATCHMAN_TYPESCRIPT_TRIGGER =
["trigger", "./ts", {
  "name": "tsTrigger",
  "expression": ["suffix", "ts"],
  "command": ["make" "typescript"]
}]
endef

# export as shell variable
export WATCHMAN_TYPESCRIPT_TRIGGER

# ...

# use shell variable in the command. $$ in make means $ in the shell command.
watchman-typescript:
    watchman -j "$$WATCHMAN_TYPESCRIPT_TRIGGER"
票数 4
EN

Stack Overflow用户

发布于 2014-12-31 01:17:34

在makefile中,可以使用行延拓字符 \将某些内容拆分为多行:

代码语言:javascript
复制
define WATCHMAN_TYPESCRIPT_TRIGGER = \
["trigger", "./ts", { \
  "name": "tsTrigger", \
  "expression": ["suffix", "ts"], \
  "command": ["make" "typescript"] \
}] \
endef
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27714675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档