对某一类工程例如 OpenCV 工程,可以建立模板,每次进行重新建立工程时,工程路径都已经配置完好,以此避免每次都需要手动配置工程。
如果自行添加 property sheet 的话,每次新建工程师还得手动添加这个属性页,但这样的话是 IDE 环境交互式修改,容易上手和实现。
因此选择以先配置好一个 OpenCV 类工程,再以此为模板建立新工程。这里面如果采用宏定义的话将会使得这个模板更有可拓展性,那么就可以通过修改系统环境变量添加全局的宏,还可以在 Microsoft.Cpp.Win32.user 文件中来添加宏,这个宏对 VS 是全局的,最后一种就是添加本工程才会用到的宏,然而本工程的 属性页中(对应 .vcxproj 文件)并没有像 Microsoft.Cpp.Win32.user 里那样可以自定义宏,那么就需要手动修改 .vcxproj 文件来达到目的。
这个形式类似于 CUDA 在 VS 中建立一个新工程时的做法,CUDA 新工程的 .vcxproj 文件中除了导入 VC 中补丁属性外还导入了 CUDA 定义的属性:
<Import Project="$(VCTargetsPath)\BuildCustomizations\CUDA 6.5.props" />
翻看 CUDA 6.5.props 就回发现许多在 CUDA 类工程中才会出现的宏。
那么同样的,对于 OpenCV 就在其工程文件 .vcxproj 中添加自定义,只对本工程有效的宏: