VS 项目文件 .vcxproj 文件 工程自定义宏
来源:互联网 发布:java面试笔试题及答案 编辑:程序博客网 时间:2024/06/02 02:29
对某一类工程例如 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 中添加自定义,只对本工程有效的宏:
<!-- 2015/05/06/1606--> <!--Line before modification--> <!-- <PropertyGroup Label="UserMacros" /> --> <!--Lines after modification--> <PropertyGroup Label="UserMacros"> <OPENCV_PATH_2_4_8_BUILD>C:\Program Files\OpenCV-2.4.8\build</OPENCV_PATH_2_4_8_BUILD><OPENCV_PATH_2_4_8_ADDITIONALLIB>C:\Program Files\OpenCV-2.4.8\build</OPENCV_PATH_2_4_8_ADDITIONALLIB> </PropertyGroup> <!--Modification end here-->
需要注意的是,全局宏与项宏之间的区别:
全局宏
应用于项目配置的所有项目。 具有语法 $(name)。 全局宏的示例是 $(VCInstallDir),它存储 Visual Studio 安装的根目录。 全局宏与 MSBuild 中的 PropertyGroup 相对应。
项宏
具有语法 %(name)。 对于文件来说,仅适用于该文件的项宏,例如可以使用 %(AdditionalIncludeDirectories) 来指定仅适用于特定文件的包含目录。 这种项宏与 MSBuild 中的 ItemGroup 元数据相对应。 在项目配置中使用时,项宏适用于特定类型的所有文件。 例如,C/C++“预处理器定义”配置属性可以获取适用于项目中所有 .cpp 文件的 %(PreprocessorDefinitions) 项宏。 这种项宏与 MSBuild 中的 ItemDefinitionGroup 元数据相对应。 有关详细信息,请参阅项定义。
应用于项目配置的所有项目。 具有语法 $(name)。 全局宏的示例是 $(VCInstallDir),它存储 Visual Studio 安装的根目录。 全局宏与 MSBuild 中的 PropertyGroup 相对应。
项宏
具有语法 %(name)。 对于文件来说,仅适用于该文件的项宏,例如可以使用 %(AdditionalIncludeDirectories) 来指定仅适用于特定文件的包含目录。 这种项宏与 MSBuild 中的 ItemGroup 元数据相对应。 在项目配置中使用时,项宏适用于特定类型的所有文件。 例如,C/C++“预处理器定义”配置属性可以获取适用于项目中所有 .cpp 文件的 %(PreprocessorDefinitions) 项宏。 这种项宏与 MSBuild 中的 ItemDefinitionGroup 元数据相对应。 有关详细信息,请参阅项定义。
但 .vcxproj 不是万能的,对于有些属性我们就不是那么容易修改的。
例如我想在“调试->环境”中实现合并环境:
PATH=%PATH%;$(OPENCV_PATH_2_4_8_BUILD)\x86\vc11\bin;
但是在工程文件中始终没能找到对应项。
如何建立工程模板,可以参考文章:
在 Visual Studio 中创建项目和项的模板
为Visual Studio添加项目模板及项模板
相关文章:
Visual Studio 2010 C++ 工程文件中添加自定义宏
.vcxproj 文件组织结构:
http://blogs.msdn.com/b/visualstudio/archive/2010/05/14/a-guide-to-vcxproj-and-props-file-structure.aspx
http://blogs.msdn.com/b/vsproject/archive/2009/06/18/platform-extensibility-part-2.aspx
0 0
- VS 项目文件 .vcxproj 文件 工程自定义宏
- VS 项目文件 .vcxproj 文件 工程自定义宏, .vcxproj 文件组织结构
- VS2010工程中的*.vcxproj.filters文件
- VS2010工程中的*.vcxproj.filters文件
- opencv + vs 解决方s案加载失败,无法读取项目文件“xxx.vcxproj”
- VS2010工程中的*.vcxproj.filters文件用于项目下文件的虚拟目录,不能丢弃
- c++ 项目文件 .sln和 .vcxproj,为解决方案创造文件
- Trade.vcxproj 文件
- Lab 相关 ---- 无法读取项目文件 xxx.vcxproj 的解决方法
- 【VS2013】解决方案加载失败,无法读取项目文件“xxx.vcxproj”
- vcxproj文件和vcxproj.filters文件冲突 解决
- VS集成Qt时,VS中的.vcxproj.user 文件相对于Qt的作用
- VS工程文件解析
- 工程文件vs MAKEFile
- VS的vcxproj文件 + 调试技巧之调用堆栈 + 每次重新编译
- vs工程文件转Qt工程文件
- VS2010中的各类文件作用[.sln,.suo,.vcxproj,.vcxproj.filters,.vcxproj.user]
- VS2010中的各类文件作用[.sln,.suo,.vcxproj,.vcxproj.filters,.vcxproj.user] .
- Http请求地址
- MySQL百万级数据库查询优化技巧
- 字符串和数组的反转和排序
- uva 10626 Buying Coke (DP记忆化搜索)
- Python里str函数和repr函数的区别
- VS 项目文件 .vcxproj 文件 工程自定义宏
- linux中的 inode 详解
- OC中运行时的概念
- hql Criteria 查询
- 长见识了 关于java中的volatile
- 项目开发经验总结
- JS验证日期及时间
- MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法
- 在Tomcat中部署Solr5.1