Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: kambala от Ноябрь 21, 2011, 19:02



Название: GCC, C++11 и Qt
Отправлено: kambala от Ноябрь 21, 2011, 19:02
Здравствуйте. Решил начать пользоваться новым стандартом в проекте. Под виндой никаких проблем - поставил 2010-ю студию и вперед - позаменял наконец-то огромнейшие типы итераторов на auto :)

Под мак ос (10.7) такое сразу не работает - с хкодом идет GCC 4.2.1, в котором отсутствует поддержка C++11, поэтому решил собрать свой (4.6.2). Воспользовался отличной статьей (http://solarianprogrammer.com/2011/09/20/compiling-gcc-4-6-1-on-mac-osx-lion/) (правда пришлось выставить всем зависимостям ABI=64, а то не собиралось), простой тестовый пример (такой как в статье например) собирается. Раз все хорошо, то полез в настройки креатора, добавил новый toolchain, добавил новую цель для проекта с использованием нового компилятора, добавил в файл проекта QMAKE_CXXFLAGS += -std=c++0x. Нажимаю заветную кнопочку Build, и приехали:
Код:
g++ -c -pipe -std=c++0x -g -gdwarf-2 -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -Wall -W -DQT_GUI_LIB -DQT_CORE_LIB -I../../../QtSDK/Desktop/Qt/474/gcc/mkspecs/macx-g++ -I../MedianXLOfflineTools -I../../../QtSDK/Desktop/Qt/474/gcc/lib/QtCore.framework/Versions/4/Headers -I../../../QtSDK/Desktop/Qt/474/gcc/include/QtCore -I../../../QtSDK/Desktop/Qt/474/gcc/lib/QtGui.framework/Versions/4/Headers -I../../../QtSDK/Desktop/Qt/474/gcc/include/QtGui -I../../../QtSDK/Desktop/Qt/474/gcc/include -I. -I. -I../MedianXLOfflineTools -I. -F/Developer/QtSDK/Desktop/Qt/474/gcc/lib -o main.o ../MedianXLOfflineTools/main.cpp
g++: error: x86_64: No such file or directory
make: Leaving directory `/Developer/Projects/Qt/MedianXLOfflineTools-build-desktop-Qt_4_7_4_-_GCC_4_6_2_Debug'
g++: error: unrecognized option '-arch'
g++: error: unrecognized option '-Xarch_x86_64'
make: *** [main.o] Error 1
И теперь не знаю что делать :( Может надо какие-то дополнительные параметры подописывать при сборке GCC?

Вот мой:
Код:
kambala-macbook:4.7.4 kambala$ /Developer/Projects/C++/gcc-4.6.2/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/Developer/Projects/C++/gcc-4.6.2/bin/gcc
COLLECT_LTO_WRAPPER=/Developer/Projects/C++/gcc-4.6.2/libexec/gcc/x86_64-apple-darwin11.2.0/4.6.2/lto-wrapper
Target: x86_64-apple-darwin11.2.0
Configured with: ../gcc-4.6.2/configure --prefix=/Developer/Projects/C++/gcc-4.6.2 --with-gmp=/Developer/Projects/C++/gcc-4.6.2 --with-mpfr=/Developer/Projects/C++/gcc-4.6.2 --with-mpc=/Developer/Projects/C++/gcc-4.6.2 --enable-checking=release --enable-languages=c,c++ --program-suffix=-4.6.2 --with-dwarf2 ABI=64
Thread model: posix
gcc version 4.6.2 (GCC)

Предустановленный же gcc не ругается на эти параметры, собран он так:
Код:
kambala-macbook:4.7.4 kambala$ gcc -v
Using built-in specs.
Target: i686-apple-darwin11
Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.1~22/src/configure --disable-checking --enable-werror --prefix=/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.1~22/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)

Использую Qt 4.7.4 из последнего QtSDK.

З.Ы. На всякий случай пытался скомпилировать Qt из исходников новым GCC, получил сразу же аналогичную ошибку:
Код:
Creating qmake. Please wait...
/Developer/Projects/C++/gcc-4.6.2/bin/g++ -c -o project.o -arch i386 -pipe -DQMAKE_OPENSOURCE_EDITION -g -fconstant-cfstrings -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/mac -Igenerators/symbian -I/Developer/QtSDK/QtSources/4.7.4/include -I/Developer/QtSDK/QtSources/4.7.4/include/QtCore -I/Developer/QtSDK/QtSources/4.7.4/src/corelib/global -I/Developer/QtSDK/QtSources/4.7.4/src/corelib/xml -I/Developer/QtSDK/QtSources/4.7.4/tools/shared -DQT_NO_PCRE -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL -DQT_NO_COMPRESS -I/Developer/QtSDK/QtSources/4.7.4/mkspecs/macx-g++ -DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT  project.cpp
g++: error: i386: No such file or directory
g++: error: unrecognized option ‘-arch’
make: *** [project.o] Error 1


Название: Re: GCC, C++11 и Qt
Отправлено: Авварон от Ноябрь 21, 2011, 19:55
у эпла патченый гцц. была такая шняга, кажется забил в итоге на самосборный гцц


Название: Re: GCC, C++11 и Qt
Отправлено: Igors от Ноябрь 21, 2011, 20:09
у эпла патченый гцц. была такая шняга, кажется забил в итоге на самосборный гцц
Аналогично. Времени эти эксперименты жрут безмерно, а эффект (даже в случае полного успеха) невелик. Для проектов где нужно выжать всю скорость использую ICC  (хорошо дружит с Xcode) для остальных - спокойно gcc 4.2. IMO не стоит слишком рваться вперед  :)


Название: Re: GCC, C++11 и Qt
Отправлено: kambala от Ноябрь 21, 2011, 20:20
да, печально... будем надеяться, что в следующий релиз xcode с сопутствующими включат хотя бы GCC 4.5.


Название: Re: GCC, C++11 и Qt
Отправлено: Igors от Ноябрь 21, 2011, 20:31
да, печально... будем надеяться, что в следующий релиз xcode с сопутствующими включат хотя бы GCC 4.5.
Там своя песня. Я тоже в свое время порыпался (мол, ну хотя бы gcc 4.4) но потом дошло - если apple "не одобрят" - дело тухлое. В этом есть свои плюсы.


Название: Re: GCC, C++11 и Qt
Отправлено: gogi от Ноябрь 22, 2011, 07:32
да, печально... будем надеяться, что в следующий релиз xcode с сопутствующими включат хотя бы GCC 4.5.

Зачем им gcc? Они будут включать clang.


Название: Re: GCC, C++11 и Qt
Отправлено: GreatSnake от Ноябрь 22, 2011, 07:39
Есть проверенное годами правило - хочешь кросс-платформенность - забудь про все новые фенечки)


Название: Re: GCC, C++11 и Qt
Отправлено: kambala от Ноябрь 22, 2011, 11:14
да, печально... будем надеяться, что в следующий релиз xcode с сопутствующими включат хотя бы GCC 4.5.

Зачем им gcc? Они будут включать clang.
он и сейчас есть, но довольно сырой. пробовал им собирать - не видит хедеров (разбираться было лень), хотя в тулчейне в креаторе прописан.


Название: Re: GCC, C++11 и Qt
Отправлено: Пантер от Ноябрь 22, 2011, 11:18
Чтобы видел хидеры, нужно его пересобрать. В дженте для этого есть флаг system-cxx-headers.


Название: Re: GCC, C++11 и Qt
Отправлено: kambala от Ноябрь 22, 2011, 11:30
спасибо, может как-то попробую...


Название: Re: GCC, C++11 и Qt
Отправлено: gogi от Ноябрь 23, 2011, 07:52
да, печально... будем надеяться, что в следующий релиз xcode с сопутствующими включат хотя бы GCC 4.5.

Зачем им gcc? Они будут включать clang.
он и сейчас есть, но довольно сырой. пробовал им собирать - не видит хедеров (разбираться было лень), хотя в тулчейне в креаторе прописан.
Я к тому, что ждать новый gcc на маках не нужно, его не будет. А clang рано или поздно допилят.
Qt+clang официально дружат только начиная с 4.8, а она ещё не вышла.


Название: Re: GCC, C++11 и Qt
Отправлено: kambala от Ноябрь 23, 2011, 08:44
Qt+clang официально дружат только начиная с 4.8, а она ещё не вышла.
а, ну вот и отлично, значит ждать осталось не так и долго - уже ж RC есть