我知道您可以在项目属性中提供命令行或添加开关,但是您可以从源文件中执行此操作吗?我需要为某些源文件设置某些开关,而无需进入项目属性并每次手动执行。那么也许您可以使用C ++源文件中的预处理器来完成它?
答案 0 :(得分:0)
例如,有一些#pragma可以改变代码块的代码生成/优化,但我认为这是非常有限的。
答案 1 :(得分:0)
首先:编译/链接不执行您的C ++代码。因此,您无法根据某些C ++条件(如if / else /...)编写C ++ piece'o代码并做出决定(更改此项目的某些项目设置)。
#pragma
和#defines
是您已经知道的预处理器指令。虽然编译器理解#pragmas
,但编程能力有限且通常是编译器特定的。
这些的常见用途是使代码平台独立。
要回答您的原始问题“如何以程序方式修改项目属性(而不是手动)?”:您可以使用#pragmas
&编写“代码”。您的代码中#defines
(甚至是有条件的)来控制各种设置。通常支持是特定于编译器供应商的,因此除非您小心,否则您的代码很可能不是可移植的(跨编译器)。
在我的GCC上,我总是发现c ++ config.h是各种cpp指令的一个很好的例子。在我的Windows PC上,它安装在X:\MinGW\lib\gcc\mingw32\4.5.2\include\c++\mingw32\bits\c++config.h
找出支持的cpp指令,编译器的RTM。
另一个选择显然是编写shell / perl / ...脚本来修改项目设置/ Makefile。我建议将自己纠缠在cpp指令中。 :)
当然,此选项会在编译之前更改设置,而在期间不会更改。但如果这对你来说不是一个问题,那么请使用这个而不是cpp指令。
答案 2 :(得分:0)
如前所述,#pragma
语句是特定于供应商的。对于Visual Studio 2005,请查看支持的#pragma
语句:Pragma Directives
我还想与thekashyap一起编写脚本来修改每个文件的项目设置,原因如下: