在我的公司,我们有一个大型 C++ 项目,它具有多种功能,可以通过各种预处理器定义启用或禁用。
如果我们要在项目配置列表中列举每个可能的预处理器/功能组合,我们将拥有一个相当广泛的列表(更不用说长配置名称了)!
是否有插件(或其他一些未知功能)可以在用户启动构建时显示提示,以便用户可以选中/取消选中可配置功能列表,以启用或禁用预处理器定义?
像这样的东西会很棒:
在我的公司,我们有一个大型 C++ 项目,它具有多种功能,可以通过各种预处理器定义启用或禁用。
如果我们要在项目配置列表中列举每个可能的预处理器/功能组合,我们将拥有一个相当广泛的列表(更不用说长配置名称了)!
是否有插件(或其他一些未知功能)可以在用户启动构建时显示提示,以便用户可以选中/取消选中可配置功能列表,以启用或禁用预处理器定义?
像这样的东西会很棒:
您可以创建一个简单的应用程序,该应用程序将生成一个带有定义的头文件
#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 事件执行,以确保在编译之前更新头文件。
我喜欢使用 CMake 来完成这项任务。在 aCMakeLists.txt
中,您可以使用 command set(<variable> <value> CACHE <type> <docstring>)
,它创建一个变量并将其与给定的文档字符串一起放入 CMake 缓存中。然后,您可以使用诸如ccmake
编辑这些值之类的工具。例如,如果您将该值设为布尔值,则可以打开或关闭功能。
在 Windows 上,您可以使用gui查看和编辑缓存条目,这类似于您在问题中发布的对话框。
编辑:创建构建时,CMake 不会弹出一个弹出窗口。相反,它会记住缓存中的变量。通常的方法是使用不同功能的不同构建,即您可以在调试模式下构建一个包含所有功能的构建,另一个在发布模式下构建,仅包含最少的功能集,依此类推。
您可以查看我的分析工具,该工具构建项目中使用的所有预处理器键的列表。http://cdsan.com/Samp_CondParams.php
除了构建列表本身之外,它还对这些参数进行分类。