在我的公司,我们有一个大型的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 event被执行,以确保该头文件编译前右更新。
http://www.dotnetperls.com/post-pre-build-macros – 2012-08-03 14:18:27
http://visualstudiohacks.com/general/customize-your-project-build-process/ – 2012-08-03 14:18:54
我熟悉前期和后期工作,构建事件,但我不确定是否可以使用它们来修改预处理器定义。 如果您可以在预构建步骤中修改预处理器定义,那么手动显示Windows窗体提示并将结果传输到预构建步骤可能会非常困难。但说实话,我的问题实际上更多地是为了找到一个可能已经存在的可配置插件,以避免所有这些额外的黑客入侵。 – BTownTKD 2012-08-03 14:25:44
我喜欢用CMake的正是这种任务。在CMakeLists.txt
中,您可以使用命令set(<variable> <value> CACHE <type> <docstring>)
,该命令创建一个变量并将其放入具有给定文档字符串的CMake缓存中。然后,您可以使用诸如ccmake
之类的工具编辑这些值。如果您将值设置为布尔值,则可以打开或关闭功能。
在Windows上,您可以查看并与gui,它类似于您曾经参与过这个问题对话框编辑缓存条目。
编辑:当您创建构建时,CMake不会弹出一个弹出窗口。相反,它会记住缓存中的变量。通常的方法是让不同的版本具有不同的功能,例如,您可以在调试模式下创建一个具有所有功能的版本,另一个版本只具有最小功能设置等。
您可以检查出我的分析工具,它是建立在项目中使用的所有预处理器的密钥列表。 http://cdsan.com/Samp_CondParams.php
除了建立的名单本身它使那些PARAMS的分类。
这对于Nightly Build来说是很讨厌的。哪个开发人员要迟到? – MSalters 2012-08-03 14:31:29
这是一个有效的点;它可能只有在项目配置设置为“自定义”或类似的情况下才会显示。 – BTownTKD 2012-08-03 14:47:29