c++ - 编译选项的运行时确定

标签 c++ visual-studio-2008

我需要能够在运行时确定使用哪些编译选项来构建可执行文件。有办法做到这一点吗?

编辑:我对检测优化设置特别感兴趣。原因是我正在编写必须尽可能快地运行的商业软件。虽然我只是修改和测试系统,但我并没有做所有的优化,因为它花费的时间太长了。但是我担心我可能会不小心去发布一个未经优化的程序版本。我想要做的是让程序在启动时给我一个视觉警告,比如“这是慢速版本 - 不要发布”。

编辑:也许我可以编写一些小实用程序作为预构建步骤运行?命令行是否存储在某个文件中?如果是,那么我可以提取它,然后将它作为字符串写入某个包含文件,然后嘿!

编辑: 我的选择不是在调试和发布之间。调试太慢了——我只保留它用于调试。我的日常选择是在优化和 super 优化之间(包括编译速度慢的链接时间编译,甚至是配置文件引导的优化)。

编辑:我经常对复杂的编译过程、不同的库、不同的预定义宏、不同的源文件等进行更改。必须维护多个几乎相同的项目文件似乎很笨拙仅在几个优化标志上有所不同。我更愿意只在需要时在单个项目中切换几个标志并重新编译。我只想让可执行文件自行测试它的创建方式。

编辑: IIRC 有一些方法可以要求 visual studio 创建一个 makefile。我可以要求 visual studio 为我创建这个 makefile 作为预构建步骤吗?

最佳答案

据我所知,将信息从构建系统传递到正在运行的程序的最佳方法是通过预处理器。您可以在命令行上传递预处理器定义,并在内部使用它们来设置变量的值、选择代码或使用 #ifdefs 进行的任何操作。

因此设置您的构建系统以使用 DEBUG_SET 之类的东西来调试其调试构建等。


解决第二个“编辑”,是的,预构建和后构建工具的命令行放在项目的 vcproj 文件中。它是一个 XML 文件,您应该在标签 Configurations->Tool 下找到它,其名称属性类似于“VCPreBuildEventTool”。尝试使用 GUI 添加一个文件,然后在文本编辑器中打开该文件,您应该会看到。

创建工具来处理 vcproj 文件在这里相当普遍。我想知道我们是否不能使用评论中提到的一些属性表来代替...

关于c++ - 编译选项的运行时确定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2365663/

相关文章:

sql-server - 在数据库中搜索数据

c++ - "PVOID"与类型为 "LPCTSTR"的参数不兼容

C++ 程序未使用 .get 按预期输出

c++ - 我怎样才能使 Qt 应用程序更小

c++ - 模板构造函数没有匹配的函数调用错误

c# - 无法加载 DLL "OraOps10.dll"

c++ - Qt/C++ 对扩展 QWidget 的调用函数

visual-studio-2008 - Visual Studio 2008 键盘快捷键

c - Visual Studio 2008 与转义序列的奇怪行为

VB.NET自动实现的属性——VS2010和VS2008的兼容性