是否可以根据构建配置更改 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
我有一个为 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