1

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

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

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

像这样的东西会很棒:

在此处输入图像描述

4

3 回答 3

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 事件执行,以确保在编译之前更新头文件。

于 2012-08-03T14:15:10.953 回答
0

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

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

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

于 2012-08-03T15:02:18.123 回答
0

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

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

于 2012-08-03T21:41:24.297 回答