【问题标题】:Using a shell variable within Makefile在 Makefile 中使用 shell 变量
【发布时间】:2014-02-17 06:41:04
【问题描述】:

我在 make 文件中有一行用于编译 c 程序,如下所示 $(CC) -c -o $@ $< $(CFLAGS)。我每次都必须修改代码中的特定行并再次编译。修改只是函数的参数。我在一个文件中有参数,我使用sed 实用程序修改我的c 源代码,然后编译。我想看看哪些争论导致编译成功。我尝试使用这个$(CC) -c -o $@ $< $(CFLAGS) ; echo $? >status,我希望如果编译成功status 文件会有一个条目0。但我在status 文件中看到了源文件名。我知道$? 也是一个自动变量。如何在 makefile 中读取 shell 变量 $? ?我尝试过使用$(CC) -c -o $@ $< $(CFLAGS) ; echo $$? >status$(CC) -c -o $@ $< $(CFLAGS) ; echo $(shell echo $?) >status,但没有得到正确的结果。

【问题讨论】:

  • 转义$ 是正确的(使用echo $$? > status)。 “没有得到正确的结果”是什么意思?你得到了什么结果?
  • 您使用的是类 Unix 操作系统吗?因为在 Windows 上 $? 被称为 %errorlevel%

标签: gnu-make


【解决方案1】:

版本

echo $$? > status

绝对适合我。您使用的是什么操作系统?使用$$?时出现什么错误结果?

如果您使用的是 Windows,则没有 $?,您可能希望使用 %errorlevel% 代替。

【讨论】:

  • echo $$? 现在似乎可以工作了。我确定我已经尝试过了,并且我在status 中获取了源文件名。感谢您的回答
  • @MadScientist 使用$ 转义现在正在工作,我之前尝试过,我在status 文件中获取了源文件名。看来我之前做错了什么。
猜你喜欢
  • 2014-04-09
  • 2017-02-18
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
  • 2023-01-11
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多