Code::Blocks 有自己版本的#define 吗?

Does Code::Blocks have a #define for its own version?

我在 Code::Blocks 中为 wxWidgets 创建了一个新项目并注意到在生成的“about”中 window 一个“define”用于显示 wxWidgets 版本 (wxVERSION_STRING) .

我想在关于 window 中显示更多信息,包括 C::B

的版本

C::B是否有显示其版本的定义?

看起来[=44​​=] IDE 没有提供你想要的字符串常量,但是很容易将这个常量手动定义为宏,IDE 会自动将此宏添加到它编译的所有文件中。

顺便说一句,如果从命令行 运行 codeblocks 可执行文件,它将输出其版本 - 但是,我无法在 Code::Blocks 二进制文件中找到该字符串或配置文件 - 可能被混淆了。

hekto@ubuntu:~$ codeblocks
Starting Code::Blocks Release 20.03  rev 11997 2020-04-18, 19:47:24 - wx3.0.4 - gcc 9.3.0 (Linux, unicode) - 64 bit

为了定义一个宏 CB_VERSION 的值等于这个字符串,您可以打开 Global compiler settings window,选择 #defines 面板并输入这个手动宏:

请注意宏值开头的 "\\" 字符串和宏值结尾的 \\"" 字符串 - 没有它们,C++ 预处理器将无法传递此宏的值进入C++源代码。因此,下面的程序在 中编译并链接到 IDE,将输出 CB_VERSION 宏的值。

#include <iostream>

int main()
{
  const char* ver = CB_VERSION;
  std::cout << ver << std::endl;
}

更新。另一种获取当前 Code::Blocks IDE 信息的方法是查看 XML 文件 ~/.config/codeblocks/default.conf。此文件包含一条注释,描述了产品的构建方式和时间:

<!-- application info:
 svn_revision:  11997
 build_date:    2020-04-18, 19:47:24
 compiler_version:  gcc 9.3.0
 Linux Unicode
-->

另外这个文件中的XML节点VERSION存放的是正式的产品版本和发布号:

<VERSION>
    <str>
        <![CDATA[20.03-r11997]]>
    </str>
</VERSION>

但是,为了提取这些信息,您需要编写一些脚本并在编译之前调用它 - 这并不容易。所以,用版本信息定义一个宏看起来还是比较好。