Я довольно плохо знаком с QT, и я использую новую бету Nokia Qt SDK, и я работаю для разработки небольшого приложения для моего Nokia N900 в мое свободное время.
К счастью, я смог настроить все правильно и также запустить мое приложение на устройстве.
Я изучил C++ в школе, таким образом, я думал, что это не будет настолько трудно.
Я использую спокойного Создателя в качестве своего IDE, потому что он не работает с Visual Studio.
Я также хочу портировать свое приложение на Symbian, таким образом, я выполнил эмулятор несколько раз, и я также компилирую, чтобы Windows отладил самые злые ошибки. (Отладчик не работает правильно над устройством.)
Я происхожу из среды.NET, таким образом, существуют некоторые вещи, которые я не понимаю.
Когда я нажал кнопку сборки, спокойный Создатель генерирует набор файлов к моему каталогу проекта:
moc_*.cpp
файлы - я не знаю их цели. Кто-то мог сказать мне?*.o
файлы - я предполагаю, что это объектный код*.rss
файлы - я не знаю их цели, но они определенно не имеют никакого отношения к RSSMakefile
и Makefile.Debug
- Я понятия не имеюAppName
(без расширения) - исполняемый файл для Maemo, и AppName.sis
- исполняемый файл для Symbian, я предполагаю?AppName.loc
- Я понятия не имеюAppName_installer.pkg
и AppName_template.pkg
- Я понятия не имеюqrc_Resources.cpp
- Я предполагаю, что это для моих спокойных ресурсов(где AppName
название рассматриваемого приложения),
Я заметил, что эти файлы могут быть безопасно удалены, спокойный Создатель просто повторно создает их.
Проблема состоит в том, что они загрязняют мой исходный каталог. Особенно, потому что я использую управление версиями, и если они могут быть повторно созданы, нет никакого смысла в загрузке их к SVN.
Так, кто-то мог сказать мне, что точная цель этих файлов, и как я могу попросить, чтобы спокойный Создатель разместил их в другой каталог?
Править:
Кажется, что я узнал больше из ответов этого вопроса, чем я думал, что буду.:)
Большое спасибо всем, кто выручил меня. Я дал всем upvote, потому что я мог узнать о чем-то новом из каждого ответа.
На самом деле то, что рекомендовал Rob, кажется, наиболее удобное решение, но я отметил принятый ответ Kotti, потому что он предоставил мне лучшее объяснение о том, как механизм сборки QT работает.
Решение:
Кажется, что ни Maemo, ни набор инструментальных средств Symbian не поддерживают теневые сборки на данный момент, таким образом, я использую их в своем файле проекта для решения ситуации:
DESTDIR = ./NoSVN
OBJECTS_DIR = ./NoSVN
MOC_DIR = ./NoSVN
RCC_DIR = ./NoSVN
UI_HEADERS_DIR = ./NoSVN
Не полный ответ на ваш вопрос, но лишь его часть :) Кроме того, это возможно в Google.
Угадайте, что если вы разрабатываете на C ++, вы должны знать, что означает Makefile
. Также я думаю, что файл .loc
обычно является файлом с локализованными строками / содержимым.
(источник: thelins.se )
Сравнивая систему сборки C ++ с системой сборки Qt, вы можете видеть, что система сборки C ++ (серые прямоугольники) осталась неизменной. Мы все еще пишем код на C ++ здесь. Однако мы добавляем больше источников и заголовков. Здесь задействованы три генератора кода:
Компилятор метаобъектов (moc на иллюстрации) - компилятор метаобъектов принимает все классы, начиная с макроса Q_OBJECT, и генерирует исходный файл moc _ *. Cpp C ++. Этот файл содержит информацию о моделируемом классе, такую как имя класса, дерево наследования и т. Д., А также реализацию сигналов. Это означает, что когда вы посылаете сигнал, вы фактически вызываете функцию, сгенерированную moc.
Компилятор пользовательского интерфейса (uic на иллюстрации) - Компилятор пользовательского интерфейса берет проекты из Designer и создает файлы заголовков. Эти файлы заголовков затем, как обычно, включаются в исходные файлы, что позволяет вызвать setupUi для создания экземпляра дизайна пользовательского интерфейса.
Компилятор ресурсов Qt (rcc на иллюстрации) - Компилятор ресурсов - это то, о чем мы еще не говорили. Это позволяет встраивать изображения, текстовые файлы и т. Д. В исполняемый файл, но при этом иметь доступ к ним как к файлам.Мы рассмотрим это позже, я просто хочу включить это в эту картинку, где она и принадлежит.
Я надеюсь, что эта иллюстрация поясняет, что на самом деле делает Qt для добавления новых хороших ключевых слов в C ++. Если вам интересно - смело читайте некоторые из сгенерированных файлов. Только не меняйте их - они восстанавливаются каждый раз, когда вы создаете приложение.
Если вы используете QtCreator, файлы moc создаются в подкаталогах debug и release каталога вашего проекта. Файлы uic хранятся в корне каталога проекта. Файлы rcc, как правило, утомительны, но я уверен, что вы можете найти их где-нибудь в иерархии каталогов вашего проекта.
Изменить: вам не нужно включать эти файлы в свой SVN. Это примерно та же чушь, что и коммит .ncb
, .pdb
и другие временные файлы. Каждый раз, когда вы что-то меняете в своем приложении Qt, эти временные файлы регенерируются как обновление ваших изменений, поэтому нет смысла фиксировать их в SVN.
Вы можете сказать qmake (и, следовательно, QtCreator) поместить сгенерированные файлы в другое место, добавив следующее в ваш .pro файл для проекта
UI_DIR = .ui
MOC_DIR = .moc
OBJECTS_DIR = .obj
Это поместит все ui файлы в каталог .ui, moc файлы в каталог .moc и все .o файлы в каталог .obj. (Конечно, вы можете изменить их по своему усмотрению)
Соответствующая справка по qmake находится по адресу: http://doc.qt.io/archives/4.6/qmake-variable-reference.html#moc-dir
Не пытайтесь получить файлы, хранящиеся в другом каталоге; скорее, скажите Subversion игнорировать их, как, например, объясняется на http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.ignore.html .
Большинство систем управления версиями имеют хорошую поддержку для игнорирования сгенерированных файлов, поскольку это проблема, с которой сталкивается почти каждый отдельный программный проект.
Если вы используете теневые сборки (по умолчанию включены в бета-версии Qt Creator 2.0 ), то все эти временные файлы создаются в отдельной папке. Например:
\MyProjects\ProjectFoo
\MyProjects\ProjectFoo-build
Очень полезно ИМХО.