我有一个在多个平台上构建的 C++ 项目。
在 Mac OSX 和 Linux 上,我使用 SConstruct,它让我对不同的编译步骤有一些“聪明”。也就是说,我可以将程序版本放在VERSION
存储库根目录下的一个文件中,其内容很简单:
2.0
在构建 SConscript 中,我只需要打开、读取和解析该文件,就可以基于它创建动态定义。例如:
env.Append(CXXFLAGS=['-DVERSION_MAJOR=%s' % open('VERSION').read().split('.')[0]])
出于显而易见的原因,这是非常方便的。例如,它还允许我将今天的日期放入环境变量中。
现在对于 Windows,我有一个.sln
包含不同.vcxproj
文件的文件,我想做类似的事情,除了我不知道怎么做。
总而言之,我的问题是:我怎样才能拥有这样的“智能”定义(读取、解析文件并将其内容放入多个环境变量)而不必在每次版本转换时手动更改.sln
/文件?.vcxproj
我知道我也可以在 Windows 上使用 SCons,但我不想这样做(主要是因为它在平台上似乎不太受欢迎,而且我不想吓到只知道 Windows 特定工具的潜在贡献者)。