【问题标题】:Is it possible to set visual studio project properties in qmake .pro files?是否可以在 qmake .pro 文件中设置 Visual Studio 项目属性?
【发布时间】:2012-10-02 16:09:35
【问题描述】:

我有一个 qmake 批处理文件,它使用 .pri 和 .pro 创建一个用于创建 dll 的 Visual Studio C++ 项目。但是我想自动设置这个项目的属性,特别是调试命令和命令行参数在qmake中可以吗?

【问题讨论】:

    标签: c++ visual-studio-2008 qmake


    【解决方案1】:

    有可能,创建一个

    add_qt_path.pri

    包含以下内容的文件:

    # test if windows
    win32 {
      # test if already exists
      VCXPROJ_USER_FILE = "$${OUT_PWD}/$${TARGET}.vcxproj.user"
      !exists( $${VCXPROJ_USER_FILE}) {
        # generate file contents
        TEMPNAME     = $${QMAKE_QMAKE}     # contains full dir of qmake used
        QTDIR        = $$dirname(TEMPNAME) # gets only the path
        # vcxproj.user template
        VCXPROJ_USER = "<?xml version=\"1.0\" encoding=\"utf-8\"?>$$escape_expand(\\n)\
        <Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">$$escape_expand(\\n)\
          <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">$$escape_expand(\\n)\
            <LocalDebuggerEnvironment>PATH=$${QTDIR};%PATH%</LocalDebuggerEnvironment>$$escape_expand(\\n)\
            <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>$$escape_expand(\\n)\
          </PropertyGroup>$$escape_expand(\\n)\
          <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">$$escape_expand(\\n)\
            <LocalDebuggerEnvironment>PATH=$${QTDIR};%PATH%</LocalDebuggerEnvironment>$$escape_expand(\\n)\
            <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>$$escape_expand(\\n)\
          </PropertyGroup>$$escape_expand(\\n)\
          <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\">$$escape_expand(\\n)\
            <LocalDebuggerEnvironment>PATH=$${QTDIR};%PATH%</LocalDebuggerEnvironment>$$escape_expand(\\n)\
            <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>$$escape_expand(\\n)\
          </PropertyGroup>$$escape_expand(\\n)\
          <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\">$$escape_expand(\\n)\
            <LocalDebuggerEnvironment>PATH=$${QTDIR};%PATH%</LocalDebuggerEnvironment>$$escape_expand(\\n)\
            <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>$$escape_expand(\\n)\
          </PropertyGroup>$$escape_expand(\\n)\
        </Project>$$escape_expand(\\n)\
        "
        # write file
        write_file($${VCXPROJ_USER_FILE}, VCXPROJ_USER)  
      }
    }
    

    然后将其包含到您的 qmake 项目 (*.pro) 文件中,目标定义之后:

    QT += core
    QT -= gui
    
    TARGET = test3
    CONFIG += console
    CONFIG -= app_bundle
    
    include(./../../add_qt_path.pri) # add qt path to vs project
    
    # other qmake stuff
    

    您还可以向 *.vcxproj.user 添加任何其他条目,例如调试命令和命令行参数,只需查看 Visual Studio 在您设置它们时如何在 *.vcxproj.user 文件中自动生成手动。

    【讨论】:

    • 这对我很有用,谢谢!我不得不修正一个错字。 http://$$escape_expand"&gt;schemas.microsoft.com/developer/msbuild/2003 应该只是:http://schemas.microsoft.com/developer/msbuild/2003
    【解决方案2】:

    大多数构建环境属性可以通过 qmake 选项设置(您可以在 qmake 源代码中找到它们,例如 *_objectmodel.* 文件)。不幸的是,您需要的两个选项实际上都是运行时选项,所以我认为您无法在 .pri/.pro 文件中设置它们。 Afaik,它们甚至没有存储在 .vcxproj 文件中,而是存储在 .vcxproj.user 文件中。如果不是为了这个,那么修改 qmake 可能是一种选择,即使它可能不值得付出努力。

    【讨论】:

      猜你喜欢
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      相关资源
      最近更新 更多