【问题标题】:Is it possible to pass variable value from source file to makefile?是否可以将变量值从源文件传递到makefile?
【发布时间】:2021-06-07 10:23:31
【问题描述】:

例如,我想传递我在 main.c 中的值。

#define VERSION_MAJOR 1
#define VERSION_MINOR 1
#define VERSION_PATCH 0

我可以在 makefile 变量中为我的 *.exe 版本获取这些值 例如,然后我的 exe 名称将看起来 program_version_$(VERSION_MAJ)$(VERSION_MIN)$(VERSION_PAT).exe

【问题讨论】:

  • 不,这通常是不可能的(或者说有点困难和复杂),但反过来非常很容易。也许你应该这样做?
  • 与其乱搞这些奇怪的东西,也许开始使用实际的版本控制?我不太明白为什么 make 文件需要知道它正在构建的版本。相反,它可以告诉程序它是哪个版本。
  • 如果您使用 GNU make 并拥有诸如 sed 等 POSIX 工具,您可以编写一个 $(shell ...) 函数,该函数使用 shell 操作从文件中提取这些值。确实,将值放入 makefile 并让 makefile 将它们写入源比其他方式更简单,但如果你有一个体面的 shell 环境,这两种方式都可以完成。

标签: c gcc makefile


【解决方案1】:

这是可能的,但太复杂了,不是最好的主意。

更好的方法是在 makefile 中定义版本,然后在编译器命令行中定义宏(在 gcc 中使用 -D)。

【讨论】:

  • 你能给我举个例子吗?
  • @hellboy 在您的Makefile 中尝试类似CPPFLAGS = -DVERSION_MAJOR=1 的内容。那么CPPFLAGS变量在Makefile中是如何使用的取决于你使用隐式规则的程度。
猜你喜欢
  • 2022-11-20
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 2018-03-06
  • 2020-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多