Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: niXman от Ноябрь 05, 2009, 00:21



Название: Одновременная сборка для нескольких компиляторов
Отправлено: niXman от Ноябрь 05, 2009, 00:21
Вот что нужно.

Есть исходники Кут. Лежат в "c:\qt"
Вот чего хотелось бы:
Запускать сборку одновременно для Mingw и MSVC. Для этого нужно указать результирующий каталог.
Собственно вопрос:
Как?

п.с.
посмотрел опции "configure.exe", там такого нет. какие варианты?


Пробовал сделать так:
1. Создаем каталоги для нужных компиляторов.
2. Запускаем две консоли.
3. В каждой из них устанавливаем значение QMAKESPEC равное нужному компилятору.
Цитировать
set QMAKESPEC=win32-g++
или
set QMAKESPEC=win32-msvc2008
4. В каждой консоле, переходим в свой каталог.
5. Запускаем "configure.exe" из исходного каталога с сорцами.

Все необходимые хидеры, либы, бинарники, скопировались. Этап конфигурации прошел успешно. Но при запуске "nmake", после некоторого времени, показалось это:
Цитировать
cl -c -FIqt_pch.h -Yuqt_pch.h -Fptmp\obj\debug_shared\QtCored_pch.pch -n
ologo -Zm200 -Zc:wchar_t- -Zi -MDd -W3 -w34100 -w34189 -GR -EHsc -DQT_SHARED -DQ
T_THREAD_SUPPORT -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB -D
QT_NO_USING_NAMESPACE -DQT_MAKEDLL -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_M
OC_COMPAT -D_USE_MATH_DEFINES -DHB_EXPORT=Q_CORE_EXPORT -DQT_DLL -I"..\..\includ
e" -I"..\..\include\QtCore" -I"tmp\rcc\debug_shared" -I"c:\qt\src\corelib\tmp" -
I"global" -I"c:\qt\src\3rdparty\zlib" -I"c:\qt\src\3rdparty\harfbuzz\src" -I"c:\
qt\src\3rdparty\md5" -I"c:\qt\src\3rdparty\md4" -I"..\..\include\ActiveQt" -I"tm
p\moc\debug_shared" -I"c:\qt\src\corelib" -I"." -I"c:\Qt\mkspecs\win32-msvc2008"
 -Fotmp\obj\debug_shared\ @C:\PROGRA~1\Temp\nmBC.tmp
qtextstream.cpp
c:\qt\src\corelib\io\qtextstream.cpp(3397) : fatal error C1083: Cannot open include file: 'qtextstream.moc': No such file or directory
qfilesystemwatcher.cpp
c:\qt\src\corelib\io\qfilesystemwatcher.cpp(631) : fatal error C1083: Cannot open include file: 'qfilesystemwatcher.moc': No such file or directory
Generating Code...
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

Какие идеи?


Название: Re: Одновременная сборка для нескольких компиляторов
Отправлено: pastor от Ноябрь 05, 2009, 13:50
Эмм. Я так понял, ты пытаешься скомпилить одни и теже исходники (c:\qt) разными компиляторами одновременно, да? вопрос: а зачем так?


Название: Re: Одновременная сборка для нескольких компиляторов
Отправлено: lit-uriy от Ноябрь 05, 2009, 16:22
>>Для этого нужно указать результирующий каталог.
Просто, в том каталоге в котором командуешь configure.exe и make, в нём Qt и будет собиратся.

На Вин2к, а может и выше, есть проблема с этим, лучше собирать на том же диске что и исходники лежат. Иначе придётся ручками make-файлы править


Название: Re: Одновременная сборка для нескольких компиляторов
Отправлено: kuzulis от Ноябрь 05, 2009, 16:58
А может еще нужно и QMAKEDIR или DESTDIR устанавливать в консолях?


Название: Re: Одновременная сборка для нескольких компиляторов
Отправлено: lit-uriy от Ноябрь 05, 2009, 17:14
нет, не нужно


Название: Re: Одновременная сборка для нескольких компиляторов
Отправлено: lit-uriy от Ноябрь 05, 2009, 17:19
Пример, исходники располагаются в: X:\Qt_src

тогда Создаём каталог X:\Qt_build_1
Создаём окружение:
Код
DOS
set QTDIR=X:\Qt_build_1
set QMAKESPEC=win32-g++
set QTBIN=%QTDIR%\bin
set PATH=%QTBIN%;%SystemRoot%\System32 ...

В каталоге X:\Qt_build_1 командуем:
Код
DOS
X:\Qt_src\configure ...

П.С. Если Perl'а в области видимости нет, то Make-файл, вроде не создаётся, тогда после конфигурации командуем:
Код
DOS
X:\Qt_src\bin\qmake


Название: Re: Одновременная сборка для нескольких компиляторов
Отправлено: crackedmind от Ноябрь 05, 2009, 22:45
Цитировать
П.С. Если Perl'а в области видимости нет, то Make-файл, вроде не создаётся, тогда после конфигурации командуем:
угу, только вот не makefile, а вообще конфигурация не пройдет...

отрывок из configure.exe
Код:
    if(sourceDir != buildDir) { //shadow builds!
        if (!findFile("perl") && !findFile("perl.exe")) {
            cout << "Error: Creating a shadow build of Qt requires" << endl
                 << "perl to be in the PATH environment";
            exit(0); // Exit cleanly for Ctrl+C
        }


Название: Re: Одновременная сборка для нескольких компиляторов
Отправлено: lit-uriy от Ноябрь 06, 2009, 00:29
>>угу, только вот не makefile, а вообще конфигурация не пройдет...
Пройдет если качать qt-win-opensource-*
там каталог include уже заполнен и он, как я понял просто копируется. Во всяком случае о том, что нужен Perl, я узнал только когда стал использовать qt-all-opensource-*


П.С. я без Perl'а собирал только 4.4.*


Название: Re: Одновременная сборка для нескольких компиляторов
Отправлено: crackedmind от Ноябрь 06, 2009, 01:40
Нет. Perl нужен только для сборки из гита, либо для так называемого shadow build, когда бинарники складываются в отдельную папку, а не в ту где сорцы. Код до глянь который я привел :)


Название: Re: Одновременная сборка для нескольких компиляторов
Отправлено: niXman от Ноябрь 07, 2009, 00:44
Чтоб не дублировать посты, вот: http://forum.vingrad.ru/forum/topic-278984.html
Спасибо всем отозвавшимся.