#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 с надстройкой. Без этого слишком много работы!