我有一个 qmake 批处理文件,它使用 .pri 和 .pro 创建一个用于创建 dll 的 Visual Studio C++ 项目。但是我想自动设置这个项目的属性,特别是调试命令和命令行参数,这在 qmake 中是否可行?
问问题
1190 次
2 回答
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 文件中自动生成它们。
于 2017-06-21T09:25:04.843 回答
2
大多数构建环境属性可以通过 qmake 选项设置(您可以在 qmake 源代码中找到它们,例如 *_objectmodel.* 文件)。不幸的是,您需要的两个选项实际上都是运行时选项,所以我认为您无法在 .pri/.pro 文件中设置它们。Afaik,它们甚至没有存储在 .vcxproj 文件中,而是存储在 .vcxproj.user 文件中。如果不是为了这个,那么修改 qmake 可能是一种选择,即使它可能不值得付出努力。
于 2012-10-11T23:28:26.157 回答