Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

сборка статической Qt(проблема с qmake)

316
22 июня 2011 года
Alm3n
889 / / 29.05.2009
Доброго.
В общем, собираю Qt. Параметры:
-static -release -no-qt3support -platform win32-g++ -arch windows
Собираю через MinGw(g++ 4.5.2). Трабла в чем, при сборке qmake ругается на невозможность привести wchar_t к char. Посмотрел в исходничках.
 
Код:
#if defined(Q_OS_WIN32)
        if(type == "os") {
            ret = "Windows";
        } else if(type == "name") {
            DWORD name_length = 1024;
            wchar_t name[1024];
            if (GetComputerName(name, &name_length))  //от на это ругается
                ret = QString::fromWCharArray(name);

Начал собирать nmak'ом, собралось. Вопрос в чем - как сделать, чтобы и g++ юникод понимал?
260
22 июня 2011 года
Ramon
1.1K / / 16.08.2003
_UNICODE
316
23 июня 2011 года
Alm3n
889 / / 29.05.2009
Да он вроде как дефайнится в одном из заголовков ifdef UNICODE.
14
24 июня 2011 года
Phodopus
3.3K / / 19.06.2008
Стоп, а при чем тут qmake и nmake. Я бы сравнил mingw-make и nmake тогда. Или я не понял написанного. Давайте по шагам чего делаем, начиная со скачки исходников. Попробую повторить.
316
24 июня 2011 года
Alm3n
889 / / 29.05.2009
Cкачал, распаковал, делаю ./configure -список_параметров. Скрипт начинает собирать qmake и отсанавливается в первом исходнике. Ошибку описал выше, platform = win32-g++. Делаю чистку всего, что успел понасоздавать configure. Запускаю VC консольку, вызываю из нее configure.exe, потом nmake и все работает, собралось(почти, но qmake все же собрался). Тоесть, не ругался на невозможность привести типы. Так вот мне нужно узнать, чего передать ./configure для win32-g++, чтобы он как-то вызывал Unicode версии функций.
14
24 июня 2011 года
Phodopus
3.3K / / 19.06.2008
Оу, я понял. Имелся в виду не запуск qmake а билд qmake-а.

Например
Цитата:

D:\USER\qt-everywhere-opensource-src-4.7.3>configure -release -nomake examples
-nomake demos -no-exceptions -no-stl -no-rtti -no-qt3support -no-scripttools -no
-openssl -no-opengl -no-webkit -no-phonon -no-style-motif -no-style-cde -no-styl
e-cleanlooks -no-style-plastique -no-sql-sqlite -platform win32-g++ -static

...

g++ -static-libgcc -static-libstdc++ -s -o qmake.exe project.o main.o makefile.o
unixmake.o unixmake2.o mingw_make.o option.o winmakefile.o projectgenerator.o p
roperty.o meta.o makefiledeps.o metamakefile.o xmloutput.o pbuilder_pbx.o borlan
d_bmake.o msvc_nmake.o msvc_vcproj.o msvc_vcxproj.o msvc_objectmodel.o msbuild_o
bjectmodel.o symmake.o initprojectdeploy_symbian.o symmake_abld.o symmake_sbsv2.
o symbiancommon.o registry.o epocroot.o qbitarray.o qbuffer.o qbytearray.o qcryp
tographichash.o qvsnprintf.o qbytearraymatcher.o qconfig.o qdatetime.o qdir.o qd
iriterator.o qfile.o qtemporaryfile.o qfileinfo.o qabstractfileengine.o qfsfilee
ngine.o qfsfileengine_iterator.o qfsfileengine_win.o qfsfileengine_iterator_win.
o qglobal.o qhash.o qiodevice.o qlibraryinfo.o qlist.o qlinkedlist.o qlocale.o q
malloc.o qmap.o qregexp.o qtextcodec.o qutfcodec.o qstring.o qstringlist.o qsyst
emlibrary.o qtextstream.o quuid.o qvector.o qurl.o qsettings.o qsettings_win.o q
variant.o qmetatype.o qxmlstream.o qxmlutils.o qnumeric.o -lole32 -luuid
g++: unrecognized option '-static-libstdc++'
copy qmake.exe D:\USER\qt-everywhere-opensource-src-4.7.3\bin\qmake.exe
Скопировано файлов: 1.

...

Qt is now configured for building. Just run mingw32-make.
To reconfigure, run mingw32-make confclean and configure.

316
24 июня 2011 года
Alm3n
889 / / 29.05.2009
И что этом configure говорит собирать с Юникод версиями функций? Там только библиотеки отключаются.
upd:Добавил -D UNICODE и все заработало.
14
25 июня 2011 года
Phodopus
3.3K / / 19.06.2008
Дефайн юникод зашит в мейк-спеках. Я привел пример варианта который работает "из коробки".
[QUOTE=qmake.conf]
#
# qmake configuration for win32-g++
#
# Written for MinGW
#

MAKEFILE_GENERATOR = MINGW
TEMPLATE = app
CONFIG += qt warn_on release link_prl copy_dir_files debug_and_release debug_and_release_target precompile_header
QT += core gui
DEFINES += UNICODE QT_LARGEFILE_SUPPORT
...
[/QUOTE]
316
11 июля 2011 года
Alm3n
889 / / 29.05.2009
И снова, здравствуйте.
Решил снова пересобрать, но уже другие ошибки. Сначала такой глюк был с QML, но я его закомментил, потом такая же фигня случилась с Ассистентом. Ни у кого не было?
Цитата:
cd tools\ && mingw32-make -f Makefile
mingw32-make[1]: Entering directory `E:/qt_src/tools'
cd assistant\ && mingw32-make -f Makefile
mingw32-make[2]: Entering directory `E:/qt_src/tools/assistant'
cd lib\fulltextsearch\ && mingw32-make -f Makefile
mingw32-make[3]: Entering directory `E:/qt_src/tools/assistant/lib/fulltextsearch'
mingw32-make -f Makefile.Release
mingw32-make[4]: Entering directory `E:/qt_src/tools/assistant/lib/fulltextsearch'
mingw32-make[4]: Nothing to be done for `first'.
mingw32-make[4]: Leaving directory `E:/qt_src/tools/assistant/lib/fulltextsearch'
mingw32-make[3]: Leaving directory `E:/qt_src/tools/assistant/lib/fulltextsearch'
cd lib\ && mingw32-make -f Makefile
mingw32-make[3]: Entering directory `E:/qt_src/tools/assistant/lib'
mingw32-make -f Makefile.Release
mingw32-make[4]: Entering directory `E:/qt_src/tools/assistant/lib'
mingw32-make[4]: Nothing to be done for `first'.
mingw32-make[4]: Leaving directory `E:/qt_src/tools/assistant/lib'
mingw32-make[3]: Leaving directory `E:/qt_src/tools/assistant/lib'
cd tools\ && mingw32-make -f Makefile
mingw32-make[3]: Entering directory `E:/qt_src/tools/assistant/tools'
cd assistant\ && mingw32-make -f Makefile
mingw32-make[4]: Entering directory `E:/qt_src/tools/assistant/tools/assistant'
mingw32-make -f Makefile.Release
mingw32-make[5]: Entering directory `E:/qt_src/tools/assistant/tools/assistant'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-subsystem,windows -o ..\..\..\..\bin\assistant.exe object_script.assistant.Release -L"e:\qt_src\lib" -L"e:\qt_src\plugins\sqldrivers" -L"e:\qt_src\lib" -lmingw32 -lqtmain tmp\obj\release_static\assistant_res.o -lQtHelp -lQtWebKit -lQtSql -lQtXml -lQtCLucene -ljscore -lshlwapi -lversion -lphonon -lQtNetwork -lQtGui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtCore -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32
mingw32-make[5]: Leaving directory `E:/qt_src/tools/assistant/tools/assistant'
mingw32-make[4]: Leaving directory `E:/qt_src/tools/assistant/tools/assistant'
mingw32-make[3]: Leaving directory `E:/qt_src/tools/assistant/tools'
mingw32-make[2]: Leaving directory `E:/qt_src/tools/assistant'
mingw32-make[1]: Leaving directory `E:/qt_src/tools'


Часть вывода не попала в файл, прикреплю аттачем. Уже на скрине увидел, что либы не хватает.

Собираю с

Цитата:
-prefix C:/qt_static -release -opensource -static -no-exceptions -no-qt3support -webkit -no-declarative -no-declarative-debug -platform win32-g++ -nomake examples -nomake demos -no-sql-sqlite -D UNICODE


Цитата: Phodopus
Дефайн юникод зашит в мейк-спеках. Я привел пример варианта который работает "из коробки".


Угу, только это все равно не работает, если собирать через sh, а вот configure.exe нормально собирает. Платформа та же - Windows.

316
11 июля 2011 года
Alm3n
889 / / 29.05.2009
Забавно. Это баг Qt с версии 4.7.0. Фиксится он нахождением libjscore и переносом ее в папку с библиотеками инструмента, я перенес в корневую lib и тоже заработало. Почему-то разрабы не поддерживают(даже платную) статическую версию вебкита, а это его либа, как я понял, и баг фиксить не собираются.
14
12 июля 2011 года
Phodopus
3.3K / / 19.06.2008
Цитата: Alm3n

Угу, только это все равно не работает, если собирать через sh, а вот configure.exe нормально собирает. Платформа та же - Windows.


так на виндовс и собирают через configure...

Цитата: Alm3n
а это его либа, как я понял


его

316
12 июля 2011 года
Alm3n
889 / / 29.05.2009
Цитата: Phodopus
так на виндовс и собирают через configure...


Гм, через какой? Там их 2.

14
13 июля 2011 года
Phodopus
3.3K / / 19.06.2008
.sh и .exe ? Если да, думаю ответ очевиден)
316
13 июля 2011 года
Alm3n
889 / / 29.05.2009
Цитата: Phodopus
.sh и .exe ? Если да, думаю ответ очевиден)


Не надо было через .sh собирать?..

14
13 июля 2011 года
Phodopus
3.3K / / 19.06.2008
А как ты собирал через .sh ? Cygwin-ом?
316
13 июля 2011 года
Alm3n
889 / / 29.05.2009
MSYS. ./configure
14
14 июля 2011 года
Phodopus
3.3K / / 19.06.2008
Это документированный способ?
Qt прекрасно собирается migw-ой без MSYS. Среда ему НЕ нужна, он уже рассчитан на винды.
316
15 июля 2011 года
Alm3n
889 / / 29.05.2009
Цитата: Phodopus
Это документированный способ?


Вряд ли. Посмотрел документацию внимательнее. Где-то они пишут configure.exe, где-то без расширения. Фиг поймешь.

7
15 июля 2011 года
@pixo $oft
3.4K / / 20.09.2006
Так если без расширения,то(если я правильно понял) Windows автоматически подставляет расширения .exe/.com/.bat
Ты ведь,когда Paint или что-нибудь вызываешь через Пуск—Выполнить,не пишешь MSPaint.exe?;)
14
15 июля 2011 года
Phodopus
3.3K / / 19.06.2008
Цитата: @pixo $oft
Так если без расширения,то(если я правильно понял) Windows автоматически подставляет расширения .exe/.com/.bat


Командный интерпетатор. Переберет все из %PATHEXT%

10
16 июля 2011 года
Freeman
3.2K / / 06.03.2004
Цитата: @pixo $oft
Ты ведь,когда Paint или что-нибудь вызываешь через Пуск—Выполнить,не пишешь MSPaint.exe?;)


А что, pbrush уже не работает?

Если без шуток, я довольно часто пишу в командной строке services.msc, потому что набрать это на клаве намного быстрее, чем в дебрях меню найти панель управления, зайти в администрирование и выбрать "Службы".

7
25 июля 2011 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: Freeman
А что, pbrush уже не работает?

Ух ты,работает:)

Цитата: Freeman
набрать это на клаве намного быстрее, чем в дебрях меню найти панель управления, зайти в администрирование и выбрать "Службы".

Вполне возможно,что быстрее описанного тобой,но можно ПКМнуть «Мой компьютер»→Управление;)(неважно,в «Пуске» или на рабочке)

316
25 июля 2011 года
Alm3n
889 / / 29.05.2009
Если использовать консоль MSYS, то с ./ будет браться то, что лежит в каталоге и там уже нужно указывать расшиерние, т.к. configure и configure.exe за подобны не считаются. если без ./, то будет браться то, что лежит в переменных среды. как там точно будет не знаю, но работала корректно запись без указания расширения, т.е. вызывалось все равно приложение с расширением ехе. а вообще, для вызова прииложений я использую excecutor, где идет выбор всех подходящих вариантов и вывод оных в список, но приоритет отдается названию на ярлычке, а потом уже имени файла, имени в пути к файлу.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог