预处理器定义 - 构建时提示?

时间:2012-08-03 14:11:52

标签: c++ visual-studio-2010 c-preprocessor

在我的公司,我们有一个大型C ++项目,具有多个功能,可以使用各种预处理器定义启用或禁用。

如果我们要在项目配置列表中枚举每个可能的预处理器/功能组合,我们将拥有相当广泛的列表(更不用说长配置名称)了!

是否存在插件 - 或其他一些未知功能 - 可在用户启动构建时显示提示,以便用户可以选中/取消选中可配置功能列表,以启用或禁用预处理器定义

这样的事情会很棒:

enter image description here

3 个答案:

答案 0 :(得分:2)

您可以创建一个简单的应用程序,它将生成带有定义

的头文件
#ifndef __GEN_CONFIG__
#define __GEN_CONFIG__

#undef  LOGGING
#define LOGGING 1 // for example

#undef  FEATURE_A
#define FEATURE_A 0

#endif

然后可以将此标题包含在项目中。

应用程序/对话框可以作为Visual Studio Pre-Build event执行,以确保在编译之前更新头文件。

答案 1 :(得分:0)

我喜欢使用CMake来完成这项任务。在CMakeLists.txt中,您可以使用命令set(<variable> <value> CACHE <type> <docstring>),该命令创建一个变量并将其放在具有给定文档字符串的CMake缓存中。然后,您可以使用ccmake等工具编辑这些值。如果您将值设置为布尔值,则可以打开或关闭功能,例如。

在Windows上,您可以使用gui查看和编辑缓存条目,这与您在问题中发布的对话框类似。

编辑:创建构建时,CMake不会显示弹出窗口。相反,它会记住缓存中的变量。通常的方法是使用具有不同功能的不同构建,即,您可以在调试模式下使用所有功能构建一个构建,在发布模式下使用仅具有最小特征集的另一个构建,等等。

答案 2 :(得分:0)

您可以查看我的分析工具,该工具构建项目中使用的所有预处理程序密钥的列表。 http://cdsan.com/Samp_CondParams.php

除了建立列表本身之外,它还对这些参数进行了分类。