У меня есть пакетный файл qmake, который использует .pri и .pro для создания проекта Visual Studio C ++, который используется для создания DLL. Но я хотел бы настроить свойства этого проекта автоматически, в частности, отладочную команду и аргументы командной строки, возможно ли это в qmake?
Можно создать
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), после определение TARGET:
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, когда вы настраиваете их вручную.
Большинство свойств среды сборки можно настроить с помощью параметров qmake (вы можете найти их в источниках qmake, например, * _objectmodel. * Files). К сожалению, обе опции, которые вам нужны, на самом деле являются опциями времени выполнения, поэтому я не думаю, что вы сможете установить их в файлах .pri / .pro. На самом деле, они даже не хранятся в файле .vcxproj, а в файле .vcxproj.user. Если бы не это, модификация qmake могла бы быть вариантом, хотя это, вероятно, не стоило бы усилий.