【问题标题】:How to change the macro value before comipling using Make or CMake? [duplicate]如何在使用 Make 或 CMake 编译之前更改宏值? [复制]
【发布时间】:2021-09-24 09:31:39
【问题描述】:

我正在寻找一些方法来更改宏值。我想使用像用户友好变量这样的宏值。就像我们使用 scanf 函数并将用户输入存储到变量一样。

如果这种方式不可行,那么我们可以使用 CMake 或 make 来做到这一点吗?如果是那怎么办?

示例。

标题。 h

#define LED  8

我想在编译之前更改这个值。有什么办法可以做到吗?

请详细说明。所以我完全可以理解。可以添加一些示例或示例链接。

谢谢。

【问题讨论】:

  • 您可以将所有受影响的宏包装在#ifndef XY #define XY 123 #endif 块中,并通过-DXY=234 命令行选项提供一个值。

标签: c makefile cmake c-preprocessor


【解决方案1】:

您需要一个编译标志 -DLED=8,在其中将 8 替换为您想要的任何值。

你还应该用

包裹 LED 宏
#ifndef LED
#define LED 8
#endif

这样,-DLED=X 会将宏定义为 X,并且由于它已经定义,因此头文件不会尝试重新定义它。

关于 CMake,请尝试添加 add_compile_definitions(LED=8)。更多信息请查看this

【讨论】:

  • 您能告诉我如何在 CMake 文件中添加 -DLED 以及如何获得该值。正如你所解释的,我认为我需要在 CMake 文件中写下这一行。正确的?我们可以使用命令行或其他方式传递值吗?
  • 尝试添加这个:add_compile_definitions(LED=8)
  • @Gerhardh 完成!
  • 更好地使用target_compile_definitions - 请参见此处的示例 -> dev.to/iblancasa/learning-cmake-2-43ga
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-24
  • 2014-07-03
相关资源
最近更新 更多