Russian Qt Forum
Май 18, 2024, 21:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка при установке Windows CE 6.0, Visual Studio 2008 and custom SDK  (Прочитано 7439 раз)
ypbi4
Гость
« : Сентябрь 25, 2012, 13:41 »

Имеется:
Qt 4.8.3, Windows CE 6.0 R3, Visual Studio 2008 SP1, Windows 7 (64bit) и свой SDK, собранный в Platform Builder.

1. Разархивировал qt-everywhere-opensource-src-4.8.3 в C:\qt\4_8_3_ce
2. Установил qt для студии в папку C:\qt\4_8_3_vs2008, установил AddIn в студию
3. Для статичной сборки поправил файлы:

c:\qt\4_8_3_ce\mkspecs\common\wince\qmake.conf
Код
Bash
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
 

c:\qt\4_8_3_ce\mkspecs\win32-msvc2008\qmake.conf
Код
Bash
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
 

4. В каталоге c:\qt\4_8_3_ce\mkspecs\ создал папку для custom sdk
wincewm60testSDK-armv4i-msvc2008
4.1 Добавил файлы default_post.prf, qmake.conf, qplatformdefs.h

default_post.prf:
Код
Bash
# Visual Studio has some definitions set internally.
# Thus we do not need to redefine these.
contains(TEMPLATE, "vc.*") {
   DEFINES -= _M_ARM
   QMAKE_CXXFLAGS += -fp:precise
}
 

qplatformdefs.h:
Код
Bash
#include "../common/wince/qplatformdefs.h"
 

qmake.conf:
Код
Bash
include(../common/wince/qmake.conf)
 
CE_SDK = test SDK   # replace with actual SDK name
CE_ARCH = ARMV4I
 
DEFINES    += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x600 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM _WIN32 __arm__
DEFINES    += WINCE _WINDOWS _UNICODE UNICODE Q_OS_WINCE_WM QT_NO_PRINTER QT_NO_PRINTDIALOG QT_NO_DRAGANDDROP QT_NO_CLIPBOARD QT_NO_WIN_ACTIVEQT
 
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,6.00 /MACHINE:THUMB /ENTRY:mainACRTStartup
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,6.00 /MACHINE:THUMB
QMAKE_LFLAGS_DLL        = /SUBSYSTEM:WINDOWSCE,6.00 /MACHINE:THUMB /DLL /SAFESEH:NO
QMAKE_LIBFLAGS_RELEASE = /LTCG
QMAKE_LIBS              = corelibc.lib coredll.lib
QMAKE_LIBS_CORE         = libcmt.lib corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib
QMAKE_LIBS_GUI          = ceshell.lib ole32.lib qmenu_wince.res $$QMAKE_LIBS_CORE
QMAKE_LIBS_NETWORK      = ws2.lib $$QMAKE_LIBS_GUI
QMAKE_LIBS_OPENGL       =
QMAKE_LIBS_COMPAT       =
 
QMAKE_RC = rc /DUNDER_CE=600 /D_WIN32_WCE=0x600
 
5. Запускаю командную строку VS2008 от имени администратора. перехожу в каталог c:\qt\4_8_3_ce и выполняю конфигурацию:
Код
Bash
configure -platform win32-msvc2008 -xplatform wincewm60testSDK-armv4i-msvc2008 -static -debug-and-release -opensource -no-style-windows -no-stl -no-exceptions -no-sql-sqlite -no-declarative -no-webkit -no-gif -no-libpng -no-libmng -no-libtiff -no-libjpeg -nomake examples -nomake demos -no-multimedia -no-audio-backend -no-mmx -no-iwmmxt -no-3dnow -no-sse -no-sse2 -no-qt3support -no-openssl -no-native-gestures -no-s60 -no-phonon -no-phonon-backend -D QT_NO_DRAGANDDROP -D QT_NO_CURSOR -D QT_NO_CLIPBOARD -D QT_NO_ACCESSIBILITY -D QT_NO_SESSIONMANAGER -D NO_GETENV
 
6. Все вроде конфигурируется:
Код
Bash
Qt is now configured for building. To start the build run:setcepaths.bat wincewm60testSDK-armv4i-msvc2008 && nmake.
To reconfigure, run 'nmake confclean' and configure.
 
7. батник setcepaths.bat не найдет мой sdk. Поэтому обращаюсь к checksdk, получаю список доступных SDK, создаю батник tmp.bat и устанавливаю переменные окружения
Код
Bash
c:\qt\4_8_3_ce>bin\checksdk.exe -list
Available SDKs:
SDK Name: Pocket PC 2003 (ARMV4)
SDK Name: Smartphone 2003 (ARMV4)
SDK Name: Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
SDK Name: Windows Mobile 5.0 Smartphone SDK (ARMV4I)
SDK Name: Windows Mobile 6 Professional SDK (ARMV4I)
SDK Name: test SDK (ARMV4I)
SDK Name: STANDARDSDK_500 (ARMV4I)
SDK Name: STANDARDSDK_500 (x86)
SDK Name: STANDARDSDK_500 (SH4)
SDK Name: STANDARDSDK_500 (MIPSII)
SDK Name: STANDARDSDK_500 (MIPSII_FP)
SDK Name: STANDARDSDK_500 (MIPSIV)
SDK Name: STANDARDSDK_500 (MIPSIV_FP)
SDK Name: SMDK6400_SDK (ARMV4I)
 
c:\qt\4_8_3_ce>bin\checksdk.exe -sdk "test SDK (ARMV4I)" -script tmp.bat
 
8. Содержимое tmp.bat:
Код
Bash
@echo off
echo Environment Selection:test SDK (ARMV4I)
set PATH=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\bin\x86_arm;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin;$(WindowsSdkDir)\bin;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common\Tools;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common\IDE;C:\Program Files (x86)\Microsoft Visual Studio 9.0\;$(FrameworkSDKDir)Bin;%PATH%
set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\include;C:\Program Files (x86)\Windows CE Tools\wce600\test SDK\include\ARMV4I;C:\Program Files (x86)\Windows CE Tools\wce600\test SDK\include;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\atlmfc\include;C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\SQL Server\Mobile\v3.0
set LIB=C:\Program Files (x86)\Windows CE Tools\wce600\test SDK\lib\ARMV4I;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\atlmfc\lib\ARMV4I;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\lib\ARMV4I
 
9.Выполняю команду:
Код
Bash
nmake sub-src
 
Малость компилится и падает с ошибкой.
Код
Bash
...
qguiplatformplugin.cpp
qapplication_win.cpp
kernel\qapplication_win.cpp(52) : fatal error C1083: Cannot open include file: 'windowsm.h': No such file or directory
qclipboard_win.cpp
qcursor_win.cpp
qdesktopwidget_win.cpp
qdnd_win.cpp
qmime_win.cpp
qsound_win.cpp
Generating Code...
Compiling...
qwidget_win.cpp
kernel\qwidget_win.cpp(1756) : warning C4189: 'extra' : local variable is initialized but not referenced
qole_win.cpp
qkeymapper_win.cpp
qwinnativepangesturerecognizer_win.cpp
qsound.cpp
qguifunctions_wince.cpp
Generating Code...
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ce\bin\x86_arm\cl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
 
c:\qt\4_8_3_ce>
 

В этом месте затык. Делал аналогичную сборку с wincewm60professional-msvc2008 - все скомпилировалось, собрал тестовое приложение - на моем девайсе работает. Но очень нужна возможность отладки, поэтому пытаюсь сделать сборку для своего SDK.
Кто может подсказать?
Записан
gogi
Гость
« Ответ #1 : Сентябрь 26, 2012, 09:35 »

Цитировать
windowsm.h
А этот файл есть? Может тулчейн ты себе кривой собрал? Или include-путей не хватает?
Записан
ypbi4
Гость
« Ответ #2 : Сентябрь 26, 2012, 09:38 »

Удалось скомпилировать. Необходимо было вместо:
Код
Bash
DEFINES    += WINCE _WINDOWS _UNICODE UNICODE Q_OS_WINCE_WM QT_NO_PRINTER QT_NO_PRINTDIALOG QT_NO_DRAGANDDROP QT_NO_CLIPBOARD QT_NO_WIN_ACTIVEQT
 
написать:
Код
Bash
DEFINES    += WINCE _WINDOWS _UNICODE UNICODE Q_OS_WINCE QT_NO_PRINTER QT_NO_PRINTDIALOG QT_NO_DRAGANDDROP QT_NO_CLIPBOARD QT_NO_WIN_ACTIVEQT
 

Флаг Q_OS_WINCE_WM подключает файлы необходимые для windows mobile.

И при конфигурации я зря поставил флаг -no-style-windows.
Код
Bash
configure -platform win32-msvc2008 -xplatform wincewm60testSDK-armv4i-msvc2008 -static -debug-and-release -opensource -no-stl -no-exceptions -no-sql-sqlite -no-declarative -no-webkit -no-gif -no-libpng -no-libmng -no-libtiff -no-libjpeg -nomake examples -nomake demos -no-multimedia -no-audio-backend -no-mmx -no-iwmmxt -no-3dnow -no-sse -no-sse2 -no-qt3support -no-openssl -no-native-gestures -no-s60 -no-phonon -no-phonon-backend -D QT_NO_DRAGANDDROP -D QT_NO_CURSOR -D QT_NO_CLIPBOARD -D QT_NO_ACCESSIBILITY -D QT_NO_SESSIONMANAGER -D NO_GETENV
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.226 секунд. Запросов: 17.