是否可以根据构建配置更改 Eclipse CDT 中的代码?

Is it possible to alter code in Eclipse CDT based on build configuration?

我有一个为 CentOS 7 和 Raspberry Pi 构建的 C++ 项目。我有一个用于编译 CentOS 的 Eclipse 构建配置和另一个用于交叉编译 Raspberry Pi 的构建配置。这些都很好用。

我想要的是根据我使用的构建配置自动更改一两行代码。我注意到 Eclipse 有一个名为 ConfigName 的构建变量,但我不认为它可以在代码中访问。我还尝试在项目设置中为每个构建配置手动创建一个宏。但是,当我尝试读取代码中的宏时,我得到了它未在此范围内声明的错误。除了确定 OS 您正在编译的内容等基础知识外,我对宏没有太多经验。

这看起来应该是一个不难理解的常见任务。也许我遗漏了一些明显的东西,但我似乎找不到任何关于我正在尝试做的事情的文档。这可能吗?我是不是看错方向了?

经过大量研究文档和反复试验,我找到了解决方案。

在项目属性中,转到 C/C++ 常规 --> 路径和符号 --> 符号 --> GNU C++。为每个构建配置添加一个符号。我添加了以下内容:

CONFIG_DEBUG
CONFIG_PI_DEBUG
CONFIG_RELEASE
CONFIG_PI_RELEASE

注意:为澄清起见,请勿在同一位置同时输入上述符号。在各自的构建配置中将每个作为单个符号输入。

然后,可以使用预处理器指令更改代码。我基本上使用了以下内容:

#if defined(CONFIG_PI_RELEASE)
  // Raspberry Pi release code
#elif defined(CONFIG_RELEASE)
  // CentOS release code
#elif defined(CONFIG_PI_DEBUG)
  // Raspberry Pi debug code
#else
  // CentOS debug code
#endif