2012-08-03 80 views
1

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

如果我们列举每个可能的预处理/特征组合的项目配置列表,我们就会有自己一个相当广泛的名单(更不用说长期配置的名字)!

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

像这样的事情将是真棒:

enter image description here

+0

这对于Nightly Build来说是很讨厌的。哪个开发人员要迟到? – MSalters 2012-08-03 14:31:29

+0

这是一个有效的点;它可能只有在项目配置设置为“自定义”或类似的情况下才会显示。 – BTownTKD 2012-08-03 14:47:29

回答

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被执行,以确保该头文件编译前右更新。

+0

http://www.dotnetperls.com/post-pre-build-macros – 2012-08-03 14:18:27

+0

http://visualstudiohacks.com/general/customize-your-project-build-process/ – 2012-08-03 14:18:54

+0

我熟悉前期和后期工作,构建事件,但我不确定是否可以使用它们来修改预处理器定义。 如果您可以在预构建步骤中修改预处理器定义,那么手动显示Windows窗体提示并将结果传输到预构建步骤可能会非常困难。但说实话,我的问题实际上更多地是为了找到一个可能已经存在的可配置插件,以避免所有这些额外的黑客入侵。 – BTownTKD 2012-08-03 14:25:44

0

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

在Windows上,您可以查看并与gui,它类似于您曾经参与过这个问题对话框编辑缓存条目。

编辑:当您创建构建时,CMake不会弹出一个弹出窗口。相反,它会记住缓存中的变量。通常的方法是让不同的版本具有不同的功能,例如,您可以在调试模式下创建一个具有所有功能的版本,另一个版本只具有最小功能设置等。

0

您可以检查出我的分析工具,它是建立在项目中使用的所有预处理器的密钥列表。 http://cdsan.com/Samp_CondParams.php

除了建立的名单本身它使那些PARAMS的分类。