在我的公司,我们有一个大型C ++项目,具有多个功能,可以使用各种预处理器定义启用或禁用。
如果我们要在项目配置列表中枚举每个可能的预处理器/功能组合,我们将拥有相当广泛的列表(更不用说长配置名称)了!
是否存在插件 - 或其他一些未知功能 - 可在用户启动构建时显示提示,以便用户可以选中/取消选中可配置功能列表,以启用或禁用预处理器定义
这样的事情会很棒:
答案 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
除了建立列表本身之外,它还对这些参数进行了分类。