是否可以在qmake .pro文件中设置visual studio项目属性?

时间:2012-10-11 21:42:06

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

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

2 个答案:

答案 0 :(得分:3)

有可能,创建一个

  

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文件中生成该文件。手动

答案 1 :(得分:2)

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