【问题标题】:Variable in makefile needed in cshcsh 中需要 makefile 中的变量
【发布时间】:2020-01-03 03:20:30
【问题描述】:

我在 makefile 中有一个变量,它包含一个值。

MakefileA.mk 中的示例:

VAR1 = 1

这个值需要在csh文件中使用,例如CshA.csh:

if ($VAR1) then

如何在 csh 中包含 makefile 或提取 VAR1 的值以在 csh 文件中使用?

【问题讨论】:

  • 您使用的是哪个make?有些支持-V VARNAME 打印出值(例如BSD make),但GNU make 不支持,尽管您can use hacks
  • "make -f MakefileA"。我在想如果我可以将它移动到环境变量中,那么 csh 文件可以使用它吗?
  • 请分享makefile中调用CshA.csh脚本的部分。这将使提供解决方案变得更加容易。
  • 感谢@AlphaGoku。编辑makefile是一个选项吗?如果是这样,并且如果可以将值写入临时文件,则可以在顶层使用$(shell echo $(VAR1) > var1.txt),或在调用的make 规则中使用@echo $(VAR1) > var1.txt,然后在脚本中读取文件。
  • @AlphaGoku 将澄清发布到问题中可能是个好主意。当前的问题可能会被误解。

标签: makefile csh


【解决方案1】:

根据 OP 的输入进行修订:

考虑在 make 文件中添加一个目标来查询“var1”

query-var1:
    @echo $(VAR1)

然后在CshA.csh脚本中,使用target查询变量

...
make -f MakefileA
set VAR1=`make -f MakefileA query-var1`
if ($VAR1) then
   ...
endif

【讨论】:

  • 好答案,只要它与目标用法相匹配,稍后在 cmets 中的 OP 进行了澄清。显然,他们实际上想将有问题的变量传递给执行make 的shell,而不是make 执行的shell。
  • @JohnBollinger 感谢您指出更多信息,答案已修改以获取更多信息
  • 当我回显 $VAR1 时,它打印了语句 make -f MakefileA query-var1
  • 我也尝试直接在 csh 中执行 make -f MakefileA query-var1 。我收到错误:没有规则可以使目标“查询”
  • @AlphaGoku 请确保使用后引号“make ...”,而不是前引号“make ...”。反引号将替换为 make 命令的输出。前引号(或双引号)会将“make ...”视为字符串
猜你喜欢
  • 1970-01-01
  • 2016-07-02
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 2018-10-21
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多