Qt 4.7.4 и Microsoft Visual C 2010 Express

#visual-studio #qt

#visual-studio #qt

Вопрос:

Я только что скачал и установил последнюю версию Qt SDK (4.7.4) и самую последнюю версию Microsoft Visual C 2010 Express.

Я хочу иметь возможность создавать приложения, используя QtSDK из Visual Studio. Как мне это настроить? Я нашел несколько страниц с руководствами, но не могу найти ту, которая, похоже, работает (все пути изменились, поскольку некоторые из руководств старые, не могу использовать надстройку Qt Visual Studio, потому что у меня есть Express и т.д. И т.п.).

Я был бы очень признателен за некоторые шаги, чтобы это сделать. Я профессионально использую Visual Studio 2008 в течение 1 года, а Qt Creator — в течение 4 месяцев, но я все еще не могу в этом разобраться!

Спасибо

Ответ №1:

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

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

Давайте начнем с файла проекта (vcproj). Я собираюсь предположить, что мы собираемся поместить все сгенерированные файлы в каталог под названием «GeneratedFiles», который находится в каталоге с файлом .vcproj.

Когда ваш проект будет готов, откройте страницу свойств и задайте следующие параметры.

Отладка / среда :

ПУТЬ=$(QTDIR)bin;»$(QTDIR)bin;$(ПУТЬ)

C / C / Общие / Дополнительные включают каталоги:

  • .Сгенерированные файлы
  • $(QTDIR) включить
  • .GeneratedFiles$(конфигурационное имя)
  • $(QTDIR)includeQtCore
  • $(QTDIR)includeQtGui

    Вам понадобится больше путей включения, если вы зависите не только от QtCore и QtGui, но я просто добавил их для простоты.

C/С / Препроцессор:

  • ПОДДЕРЖКА QT_LARGEFILE_SUPPORT
  • QT_THREAD_SUPPORT
  • QT_PLUGIN и QDESIGNER_EXPORT_WIDGETS, если вы хотите экспортировать виджеты в конструктор
  • QT_DLL / QT_NODLL в зависимости от того, используются ли общие или статические библиотеки Qt
  • QT_NO_DEBUG / QT_DEBUG одно или другое в зависимости от того, используется ли release или debug Qt
  • QT_CORE_LIB вам понадобится один из них для каждой библиотеки dll Qt, от которой вы зависите
  • QT_GUI_LIB

Компоновщик / Общие / Дополнительные зависимости библиотеки:

добавьте $(QTDIR) lib в любой список, который у вас уже есть.

Компоновщик / Ввод / Дополнительные зависимости:

Добавьте любые библиотеки Qt, которые вам нужны.

  • QtCore.lib
  • QtGui.библиотека

И это в значительной степени все для файла проекта. Большая часть этого в значительной степени зависит от того, какие части Qt вы используете.

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

  • Файлы форм — вот где должны быть все файлы .ui
  • Сгенерированные файлы — содержат еще 2 фильтра Debug и Release
  • Файлы ресурсов — это где угодно .файлы qrc и изображений должны быть.

Теперь начните добавлять свои файлы в проект. На этом этапе у вас не будет никаких сгенерированных файлов для добавления, только ваши обычные исходные файлы, include, ui и qrc.

Затем добавьте свои пользовательские шаги сборки. Файлы, требующие пользовательских шагов сборки, — это все ваши файлы пользовательского интерфейса и qrc, а также все ваши файлы .h, содержащие макрос Q_OBJECT. Для каждого из них откройте страницу свойств и выберите «Пользовательский этап сборки / Общие».

Для файлов пользовательского интерфейса:

  • Командная строка: «$(QTDIR)binuic.exe «-o».GeneratedFilesui_$(inputName).h» «$(входной путь)»
  • Описание: Пользовательский интерфейс $(InputFileName)…
  • Выводит: «.GeneratedFilesui_$(inputName).h»
  • Дополнительные зависимости: $(QTDIR)binuic.exe

Для файлов qrc:

  • Командная строка: «$(QTDIR)binrcc.exe » -имя «$(inputName)» -не сжимать «$(InputPath)» -o .GeneratedFilesqrc_$(входное имя).cpp
  • Описание: Rcc’ing $(InputFileName)…
  • Выходные данные: .GeneratedFilesqrc_$(входное имя).cpp
  • Дополнительные зависимости: $(InputPath), а затем список всех изображений в вашем файле qrc.

Для файлов .h:

Это сложная задача, потому что для отладки и выпуска используется другая командная строка, а также 32-разрядная и 64-разрядная версии, поскольку это зависит от настроек вашего проекта. Я покажу вам один из своих, но лучше всего создать его в notepad на основе вашей командной строки C / C .

  • Командная строка: «$(QTDIR)binmoc.exe » -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_PLUGIN -DQDESIGNER_EXPORT_WIDGETS -DQT_CORE_LIB -DQT_GUI_LIB -DWIN64 -D_DEBUG -D_VC80_UPGRADE=0x0710 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_WINDLL «-I.GeneratedFiles» «-I$(QTDIR)include» «-I.GeneratedFiles$(конфигурационное имя)». «-I $ (QTDIR) includeqtmain» «-I$ (QTDIR)includeQtDesigner» «-I$ (QTDIR)includeQtCore» «-I $ (QTDIR)includeQtGui» «$ (входной путь)» -o «.GeneratedFiles$(ConfigurationName)moc_$(inputName).cpp»
  • Описание: Moc’ing $(InputFileName)…
  • Выводит: «.GeneratedFiles$(ConfigurationName)moc_$(inputName).cpp».
  • Дополнительные зависимости: «$(QTDIR)binmoc.exe «;$(входной путь)

После того, как вы задали все пользовательские шаги сборки, на самом деле остается только одно — добавить все сгенерированные файлы в проект. Но пока они не существуют на диске, поэтому протестируйте свои пользовательские шаги сборки и попробуйте создать проект. Это не завершится, но ничего страшного. Главное, чтобы он сгенерировал все необходимые вам файлы. Имейте в виду, что сгенерированные файлы moc_*.cpp необходимо сгенерировать для отладки и выпуска, поэтому вам придется сделать это дважды.

Добавить все qrc_.cpp и файлы ui_.h непосредственно под вашим фильтром «Сгенерированные файлы» в вашем проекте. Затем добавьте все Debugmoc_.cpp файлы под вашим фильтром «Сгенерированные файлы Debug» и ваш Releasemoc_.cpp файлы под вашим фильтром «Сгенерированные файлы Релиз».

Наконец, все в вашем фильтре «Сгенерированные файлы Debug» должно быть исключено из сборки выпуска, и все в вашем фильтре «Сгенерированные файлы Release» должно быть исключено из сборки отладки.

И я думаю, что это все. Я никогда не говорил, что это не будет болезненным. Настоящая проблема заключается в том, чтобы не забыть добавить пользовательские шаги сборки и тому подобное при создании новых файлов. И не дай бог, вам когда-нибудь понадобится изменить какие-либо настройки проекта после того, как все это настроено.

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

Комментарии:

1. Вау, большое спасибо за все это, мне раньше не удавалось найти всю эту информацию. Тем не менее, это означает, что не стоит пытаться использовать QtSDK, если у вас нет полной Visual Studio с надстройкой. Без этого слишком много работы!