Удалил по ошибке, возвращаю на место :-).
Сборка Qt 4.7.1 static для Windows CE 6.0
Прочитав эту статью начал копать, как такое сделать для Windows CE 6.0. В данной статье я не рассматриваю сборку с кастомным SDK, так как входе экспериментов так и не удалось собрать, в то же время с SDK для WinMobile все собралось и работает.
Для сборки потребуется:
Qt libraries 4.7.1 for Windows CE;
Windows Mobile 6 Professional SDK Refresh;
MSVS 2005, можно и 2008, но из-за некоторых ограничений я использовал эту версию, и также говорят, что с 2008 бывают проблемы.
После сборки получим собранную библиотеку, с включенным VS Runtime, т.е. зависимостей от каких-либо *.dll не будет.
Итак, поехали.
Шаг 1.
Устанавливаем Windows Mobile SDK в путь по умолчанию. Распаковываем Qt в корень диска C (к примеру, C:\Qt\4.7.1).
Шаг 2.
Данный шаг необходим для включения в сборку рантайма компилятора, и если это не требуется можно сразу переходить к шагу 3.
Переходим путь_до_qt\mkspecs\win32-msvc2005\. Открываем файл qmake.conf
Заменяем:
На:
Открываем путь_до_qt\mkspecs\common\wince\qmake.conf
Заменяем:
На:
Шаг 3.
Запускам Visual Studio Command Promt. Выполняем команду:
Далее нужно выполнить конфигурирование, я приведу свой конфиг. Список всех доступных опций можно получить, вызвав configure с параметров -help. В моем конфиге нет WebKit, OpenSSL и сборки примеров. Важно отключать различные опции процессора, такие как MMX. Иначе библиотека соберется, но программы работать не будут, т.е. при запуске ничего не будет происходить. Если у вас несколько ядер, то можно добавить опцию -mp, чтобы распараллелить процесс сборки.
Шаг 4.
Если configure прошло без проблем, то, во-первых, если собирали с линковкой рантайма, то перейдя в каталог bin в папке Qt и посмотрев зависимости любого *.exe(F3 в Total Commander, если установлен plugin Listener), например, moc.exe, то в списке необходимых *.dll не должно быть msvcrt*.dll.
Во-вторых, в открытой консоли переходим в каталог bin:
Далее выполняем:
В списке находим нужный нам SDK( Windows Mobile 6 Professional), и копируем эту строчку полностью. Далее:
Шаг 5.
В консоли пишем:
Шаг 6.
Для того чтобы собрать любой из примеров, нужно в открытой консоли перейти в каталог с примером и выполнить следующие команды:
Для того чтобы qmake сгенерировал проект для VS, то нужно qmake запустить с параметром -tp vc. После чего можно открыть проект в VS, и если установлен VS Add-in, то собрать в ней.
Сам я разрабатываю пока так: пишу весь проект в Qt Creator для Windows(используя Qt SDK for Windows), а для сборки под Windows CE делаю qmake && nmake(см. выше пункт с примерами).
Известные мне проблемы:
Не компилируется проект, созданный VS Addin в VS2005(возможно 2008) и завершается ошибкой PRJ002. Это проблема самого аддина, о чем говорят на форумах троллей, и потому единственный путь получить рабочий проект - это создать проект в Qt Creator и получить из него проект для VS с помощью команды qmake -tp vc.
Несмотря на то, что собирали с поддержкой Phonon, проекты с ним не собираются. Это ограничение вызвано тем, что Phonon - это плагин, а при статической сборке плагины отключаются. Поэтому в опциях configure можно добавить:
Важно: в дальнейшем, для сборки из VS Command Promt обязательно предварительно запускать скрипт wce6.bat из папки bin Qt, для установки всех необходимых путей!
Сборка Qt 4.7.1 static для Windows CE 6.0
Прочитав эту статью начал копать, как такое сделать для Windows CE 6.0. В данной статье я не рассматриваю сборку с кастомным SDK, так как входе экспериментов так и не удалось собрать, в то же время с SDK для WinMobile все собралось и работает.
Для сборки потребуется:
Qt libraries 4.7.1 for Windows CE;
Windows Mobile 6 Professional SDK Refresh;
MSVS 2005, можно и 2008, но из-за некоторых ограничений я использовал эту версию, и также говорят, что с 2008 бывают проблемы.
После сборки получим собранную библиотеку, с включенным VS Runtime, т.е. зависимостей от каких-либо *.dll не будет.
Итак, поехали.
Шаг 1.
Устанавливаем Windows Mobile SDK в путь по умолчанию. Распаковываем Qt в корень диска C (к примеру, C:\Qt\4.7.1).
Шаг 2.
Данный шаг необходим для включения в сборку рантайма компилятора, и если это не требуется можно сразу переходить к шагу 3.
Переходим путь_до_qt\mkspecs\win32-msvc2005\. Открываем файл qmake.conf
Заменяем:
CONFIG += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target embed_manifest_dll QMAKE_CFLAGS_RELEASE = -O2 -MD QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi QMAKE_CFLAGS_DEBUG = -Zi -MDd
На:
CONFIG += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target QMAKE_CFLAGS_RELEASE = -O2 -MT QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi QMAKE_CFLAGS_DEBUG = -Zi -MTd
Открываем путь_до_qt\mkspecs\common\wince\qmake.conf
Заменяем:
CONFIG += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target embed_manifest_dll embed_manifest_exe QMAKE_CFLAGS_RELEASE = -O2 -MD QMAKE_CFLAGS_DEBUG = -DDEBUG -D_DEBUG -Zi -MDd
На:
CONFIG += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target QMAKE_CFLAGS_RELEASE = -O2 -MT QMAKE_CFLAGS_DEBUG = -DDEBUG -D_DEBUG -Zi -MTd
Шаг 3.
Запускам Visual Studio Command Promt. Выполняем команду:
cd путь_до_qt
Далее нужно выполнить конфигурирование, я приведу свой конфиг. Список всех доступных опций можно получить, вызвав configure с параметров -help. В моем конфиге нет WebKit, OpenSSL и сборки примеров. Важно отключать различные опции процессора, такие как MMX. Иначе библиотека соберется, но программы работать не будут, т.е. при запуске ничего не будет происходить. Если у вас несколько ядер, то можно добавить опцию -mp, чтобы распараллелить процесс сборки.
configure -xplatform wincewm60professional-msvc2005 -debug-and-release -opensource -nomake examples -nomake demos -no-mmx -no-iwmmxt -no-3dnow -no-sse -no-sse2 -no-webkit -no-stl -no-qt3support -no-opengl -no-openvg -no-openssl -no-native-gestures -no-s60 -no-accessibility -D QT_NO_CLIPBOARD -D QT_NO_ACCESSIBILITY -D QT_NO_SESSIONMANAGER -D NO_GETENV
Шаг 4.
Если configure прошло без проблем, то, во-первых, если собирали с линковкой рантайма, то перейдя в каталог bin в папке Qt и посмотрев зависимости любого *.exe(F3 в Total Commander, если установлен plugin Listener), например, moc.exe, то в списке необходимых *.dll не должно быть msvcrt*.dll.
Во-вторых, в открытой консоли переходим в каталог bin:
cd bin
Далее выполняем:
checksdk - list
В списке находим нужный нам SDK( Windows Mobile 6 Professional), и копируем эту строчку полностью. Далее:
checksdk -sdk "имя_sdk" -script wce6.bat wce6.bat
Шаг 5.
В консоли пишем:
cd .. nmakeи начинается этап сборки, который может занять до часа времени, в зависимости от производительности ПК.
Шаг 6.
Для того чтобы собрать любой из примеров, нужно в открытой консоли перейти в каталог с примером и выполнить следующие команды:
qmake nmake
Для того чтобы qmake сгенерировал проект для VS, то нужно qmake запустить с параметром -tp vc. После чего можно открыть проект в VS, и если установлен VS Add-in, то собрать в ней.
Сам я разрабатываю пока так: пишу весь проект в Qt Creator для Windows(используя Qt SDK for Windows), а для сборки под Windows CE делаю qmake && nmake(см. выше пункт с примерами).
Известные мне проблемы:
Не компилируется проект, созданный VS Addin в VS2005(возможно 2008) и завершается ошибкой PRJ002. Это проблема самого аддина, о чем говорят на форумах троллей, и потому единственный путь получить рабочий проект - это создать проект в Qt Creator и получить из него проект для VS с помощью команды qmake -tp vc.
Несмотря на то, что собирали с поддержкой Phonon, проекты с ним не собираются. Это ограничение вызвано тем, что Phonon - это плагин, а при статической сборке плагины отключаются. Поэтому в опциях configure можно добавить:
-no-phonon -no-phonon-backend
Важно: в дальнейшем, для сборки из VS Command Promt обязательно предварительно запускать скрипт wce6.bat из папки bin Qt, для установки всех необходимых путей!