Как преобразовать обычный проект win32 (VC ++ vcproj) в проект Qt? - PullRequest
25 голосов
/ 18 января 2010

Как я могу преобразовать существующие файлы vcproj в файлы проектов, которые надстройка QT для Visual Studio распознает и рассматривает как допустимые проекты Qt?

Должен ли я просто прикусить пулю и создать новые проекты, чтобы заменить старые, а затем добавить существующий код?

Я использую QT 4.6 и VS 2008 с надстройкой Qt 1.1.2,Исходные файлы vcproj содержат NOT , сгенерированные с помощью QMake.

Ответы [ 5 ]

29 голосов
/ 18 июля 2012

Используя Visual Studio 2010+, теперь можно конвертировать проект в проект надстройки Qt, используя функцию "Преобразовать проект в проект надстройки Qt" в надстройке Qt.

Следующие шаги из работают вокруг в ошибке QTVSADDINBUG-27. Это было протестировано с Visual Studio 2010, но должно работать аналогично с новыми версиями:

  1. Щелкните правой кнопкой мыши свой проект в «Обозревателе решений», нажмите «Разгрузить проект»
  2. Щелкните правой кнопкой мыши свой проект в «Обозревателе решений», нажмите «Изменить .vcxproj»
  3. Добавить строку <Keyword>Qt4VSv1.0</Keyword> между тегами <PropertyGroup Label="Globals"> и </PropertyGroup>.
  4. Щелкните правой кнопкой мыши свой проект в «Обозревателе решений», нажмите «Перезагрузить проект»
  5. Щелкните правой кнопкой мыши свой проект в «Обозревателе решений», выберите «Преобразовать проект в проект надстройки Qt»

Если в вашем проекте есть заголовочные файлы, вам нужно будет следовать инструкциям в этом ответе , чтобы запустить генерацию файлов moc_ * в папке «Generated Files».

Для выпусков Visual Studio старше 2010 г. см. Обходной путь .

8 голосов
/ 12 февраля 2010

Вот ответ от инженера службы поддержки Nokia, имя удалено для защиты конфиденциальности:

Привет,

Спасибо за предложение. я имею передал его нашим разработчикам, которые рассмотрит возможность его реализации для будущий выпуск. Вы можете отслеживать это с помощью следующая ссылка:

https://bugreports.qt.io/browse/QTVSADDINBUG-27

С уважением, Инженер службы поддержки, Qt Development Frameworks, Nokia >

Оригинальный вопрос

У нас довольно много устаревших проектов vcproj, которые мы хотим добавить в него Qt. В настоящее время у нас нет простого способа конвертировать эти устаревшие vcproj. файлы в vcproj с поддержкой Qt.

Что я подразумеваю под Qt-enabled?

На vcproj без поддержки Qt, когда я щелкаю правой кнопкой мыши на имени проекта в Solution Explorer все опции, связанные с Qt, отображаются серым цветом.

Было бы очень полезно, если бы Nokia добавила эту возможность в VSTD Add-in.

Ребята из Stackoverflow, если вы хотите, чтобы эта функция была реализована Nokia, помогите проголосовать за нее по ссылке выше! =)

3 голосов
/ 09 ноября 2016

Я использую Qt VS Tools вместо Qt VS Add-in.

Инструкция

В файле .vcxproj внесите следующие изменения:

Добавьте <Keyword>Qt4VSv1.0</Keyword> в <Project><PropertyGroup Label="Globals"> (в соответствии с ответом Бенджамина ).

Добавьте следующий элемент в <Project> (корневой элемент):

  <ProjectExtensions>
    <VisualStudio>
      <UserProperties MocDir=".\GeneratedFiles\$(ConfigurationName)" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" lupdateOptions="" lupdateOnBuild="0" lreleaseOptions="" Qt5Version_x0020_x64="5.6-msvc2013_64" MocOptions="" />
    </VisualStudio>
  </ProjectExtensions>

Обратите внимание, что значение атрибута Qt5Version_x0020_x64 должно совпадать с именем версии Qt в Qt VS Tools. Вы можете установить произвольное значение и затем исправить его в Qt Project Settings в Visual Studio.

Моя настройка

  • Visual Studio 2013
  • Qt VS Tools 2.0.0 Beta (очевидно, ребрендинг надстройки Qt VS)
  • Qt 5.6 msvc2013_64

Примечания

Когда я следую ответу Бенджамина и пытаюсь «Преобразовать проект в проект Qt VS Tools», Visual Studio застревает.

Единственная специфическая функциональность Qt, которую я пробовал с проектом, это экспорт .pri файла.

Я выполнил обратное проектирование необходимых модификаций из свежего проекта VS, созданного с использованием шаблона Приложение Qt GUI .

1 голос
/ 25 января 2012

Преобразование обычного проекта VC в проект QT должно быть проще, и сообщение об ошибке, отображаемое плагином Qt при попытке добавить класс Qt в проект, не относящийся к QT, чрезвычайно бесполезно, особенно если учитывать реальные различия Qt .vcprojfile и не-Qt минимальны. Часто бывает, что у вас есть существующий устаревший код, встроенный в библиотеки и библиотеки DLL. Во время миграции на Qt вы можете захотеть добавить класс Qt в существующий модуль, который ранее был не-Qt-проектом. Если в модуле относительно мало исходных файлов, вам может быть проще воссоздать проект как проект Qt. Если он имеет сотни исходных файлов или сложен другими способами, часто проще отредактировать файл .vcproj вручную. Сравнивая обычный .vcproj с Qt, легко увидеть, в чем различия:

  1. Проект Qt имеет Keyword = "Qt4VS1.0" непосредственно перед Строка TargetFrameWorkVersion в верхней части файла.
  2. В нижней части файла необходимо добавить необходимые глобалы (в в частности QtVersion.Win32)
  3. Вам нужно будет добавить расположение файлов заголовков Qt в включить пути (для всех конфигураций сборки). Вы можете сделать это позже через пользовательский интерфейс visual studio
  4. Для exe или dll вам также понадобится добавить местоположения библиотеки Qt и файлы библиотеки с настройками компоновщика.

На самом деле вам нужно всего лишь сделать 1 и 2 в текстовом редакторе, а затем вы можете перезагрузить проект в Visual Studio.

После настройки путей включения и библиотек вы сможете собрать проект как обычно. Затем вы можете добавить новый класс Qt или преобразовать существующий класс в класс Qt. Чтобы сделать последнее, сначала удалите исходные файлы для существующего класса из проекта, в противном случае мастер добавления классов Qt, вероятно, будет жаловаться.

Вышеприведенные шаги предназначены для опытных пользователей, и вы всегда должны создавать резервные копии существующих проектов .vcproj файлы перед ручным редактированием. Простые ошибки могут сделать файл непригодным для использования.

1 голос
/ 17 февраля 2010

Больше ответов от инженера службы поддержки Qt;Я думаю, что первый параграф полезен, поскольку я не знал этого раньше:

Я думаю, что это действительно недоразумение.Если у вас есть проект Qt, сгенерированный с помощью надстройки, то вы можете превратить этот проект в проект Qt, сгенерированный qmake - и наоборот;Если у вас есть .vcproj, который был сгенерирован с помощью qmake -tp vc, вы можете преобразовать его в проект надстройки Qt.

Нет функциональности для преобразования обычного проекта win32 в включенный Qtпроект, поэтому созданное предложение остается в силе, см .:

https://bugreports.qt.io/browse/QTVSADDINBUG-27

Из истории этого отчета я вижу, что он был закрыт и снова открыт, поэтому я предполагаю, что возникло недопонимание относительно того, чтовы искали в первую очередь.

Если вы создаете .pro для своего проекта, используя qmake, то вы сможете создать файл .vcproj, используя 'qmake -tp vc' для этого файла .pro,Руководство по qmake доступно здесь:

http://doc.qt.io/qt-5/qmake-manual.html

Надеюсь, это поможет.

С уважением,

-

Инженер поддержки, Qt Development Frameworks,Nokia

...