如果不添加特殊的-D构建选项,是否有办法确定构建是否为“调试”。或者'发布',由配置管理器设置?我已经尝试过,如果你正在尝试NDEBUG'或者' _DEBUG',但似乎它们不是自动定义的,因此引用它们都是非生产性的。 用户只想知道构建是否发布'或者'调试'在启动时,可能因此他们知道在哪个版本上运行自动化性能测试。 有配置属性$(配置),但如何以编程方式引用它是一个难题,假设它可以完成。也许可以以某种方式检查优化级别(/ Ox)。无论如何,也许它只是不可能,用户只需要假设。我已经查看了其他问题,但由于他们似乎并没有很好地解决这个问题,我想我会把它扔进去,看看会发生什么。我告诉他,如果他们可以查看可执行文件的大小,那么,' debug'是'发布的两倍大小;他们并不关心这个概念。感谢。
答案 0 :(得分:0)
除了在编译时检查一个定义(比如NDEBUG
或_DEBUG
或其他一些定义你自己设置)并根据它输出一条消息,那么答案就是“不,你通常无法确定在运行时以编程方式编译可执行文件“。
但是在编译时这很容易做到:
#if defined _DEBUG
std::cout << "debug build\n";
#else
std::cout << "release build\n";
#endif
然后确保你的构建系统设置了你的检查定义的任何内容..不应该花很长时间。