在 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 大文件

在 Cocoapod 中导入 Kotlin/Native 框架

Linux与Windows下编译工具