在 qmake 生成的 .vcxproj 中导入 .props 文件
Posted
技术标签:
【中文标题】在 qmake 生成的 .vcxproj 中导入 .props 文件【英文标题】:Importing a .props file in .vcxproj generated by qmake 【发布时间】:2012-12-01 09:33:31 【问题描述】:使用命令
qmake -tp vc -r
我正在从相应的 Qt .pro
文件和一堆 .pri
文件生成 Visual Studio .sln
文件和一堆 .vcxproj
文件。
我希望那些生成的.vcxproj
文件导入我自己的.props
文件。我可以提供给qmake
或将其嵌入到.pro
/.pri
文件中的路径。
有可能吗?如果是那怎么办?
根据我的研究,这似乎只能通过向mkspecs
...添加自定义扩展(我必须先写...)来完成。
【问题讨论】:
我也很想知道这个问题的答案。 【参考方案1】:从qmake源码来看,是不可能的。我在 Qt4.8.5 和 latest Qt5 version 中都查看了 qmake\generators\win32\msbuild_objectmodel.cpp
,qmake 添加的唯一属性表是 Microsoft.Cpp.*.props
(各种):
xml << tag("Import")
<< attrTag("Project", "$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props")
<< attrTag("Condition", "exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')")
<< closetag()
<< closetag();
我通过创建一个快速 Python 脚本解决了这个问题,该脚本对生成的 *.vcxproj 文件进行后处理:
for l in fileinput.FileInput('Project.vcxproj', inplace=1):
print l,
if 'PropertySheets' in l:
print ' <Import Project="YourPropertySheets.props" />'
当然,最好用新功能修补 qmake,但由于只有包括你和我在内的三个人对此感到困扰,所以我认为 hack 是最佳解决方案。
【讨论】:
仅供参考:我最终为 MS Build 制作了自定义扩展,以“原生风格”处理 Qt。它们工作得很好,并且可以在少数地方进一步改进,但 MS Build 社区支持很弱,我自己没有那么多时间。但是缺少的是一些不错的项目模板,它们会使它变得更好。也许我也会在某个时候添加它们。以上是关于在 qmake 生成的 .vcxproj 中导入 .props 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 TeamCity 中导入/解析 fxcop/stylecop 生成的 xml 报告
如何在 terraform 中导入生成的 Kubernetes 集群的命名空间
在 Unity 中导入 Blender,如何生成正确的网格对撞机?
在 ORacle 10g 中导入 MySql 生成的 csv 大文件