-
Notifications
You must be signed in to change notification settings - Fork 16
Как собрать avalon под MacOS X
Данное описание могло сильно устареть. Пожалуйста, если вы собрали avalon под MacOS, обновите описание на актуальное.
Итак, вы решили собрать avalon под МакОСью? Вам и тапки в руки :)
Существует два способа собрать avalon - простой и сложный. Если повезет, то удастся собрать простым путем. Если нет, то - сложным (дополнительно был описан очень простой путь).
sudo port install git
Вообще, советую иметь у себя в системе MacPorts, потому что вщь сильно полезная и, возможно, понадобится нам в сложном способе сборки Авалона.
- Qt — можно скачать только framework (см. следующий пункт);
- XCode/QtCreator (по идее опционально, но есть свои тонкости):
Путь легкий А выглядит так:
- Качаем авалон (
git clone git://github.com/rsdn/avalon.git
); - выполняем qmake;
- выполняем qmake -project;
- запускаем avalon.xcodeproj в XCode;
- запускаем сборку.
voilá
Путь легкий B выглядит так:
- Качаем авалон (
git clone git://github.com/rsdn/avalon.git
); - выполняем qmake;
- запускаем avalon.pro в QtCreator;
- запускаем сборку.
Путь легкий C выглядит так:
- Описан тут: http://www.rsdn.ru/forum/janus/3460375.1.aspx
Путь легкий D выглядит так:
- Качаем авалон (
git clone git://github.com/rsdn/avalon.git
); - выполняем
cmake -G "XCode"
- Открываем Avalon.xcodeproj в XCode;
- в свойствах таргетов ALL_BUILD и avalon убираем опции компилятора std=c++0x
- запускаем сборку.
voilá
Естественно, надо будет еще настроить базу данных (с помощью sql-файлов для MySQL или SQLite, расположеных в папке src/sql).
Зачем нжно запускать именно в IDE? Просто потому что я не смог вручную заставить qmake генерировать Makefile'ы. Несмотря на опцию -makefile он упорно продолжал генерировать проект для XCode.
Если интересует именно Makefile, то достаточно щелкнуть правой кнопкой по avalon.xcodeproj и выбрать опцию Show package contents
. Он там.
После обновления Qt до Qt 4.5 в моем случае qmake перестал генерировать необходимые зависимости стал неправильно генерировать Makefile.
Общий путь такой же, как в лекгом случае. И даже имеет смысл запустить сборку один раз (в этом случае вылезет много ошибок, но будет сгенерирован — пусть и неправильный, но Makefile).
QtCreator поместит Makefile в корневую директорию проекта (в папку avalon), а XCode — внутрь пакета avalon.xcodeproj.
Внимательно изучите ошибки, выдаваемые компилятором. В моем случае он не смог найти подключаемые файлы QHttp, QSql*, QWebView в файле sysheaders.h.
Не стоит расстраиваться. Как минимум в версии 4.5 Qt стал еще более модульным, чем предшественники, и каждый из его модулей теперь — это отдельный фреймворк, находящийся в папке /Library/Frameworks.
Достаточно просто модифицировать Makefile так, чтобы компилятор смог все увидеть. Вот необходимые строчки:
INCPATH = -I/usr/local/Qt4.5/mkspecs/macx-g++ -I. -I/Library/Frameworks/QtCore.framework/Versions/4/Headers -I/usr/include/QtCore
I/Library/Frameworks/QtGui.framework/Versions/4/Headers -I/usr/include/QtGui -I/usr/include -I. -I. -Imodel -Istorage -I. -I. -F/Library/Frameworks
LFLAGS = -headerpad_max_install_names -F/Library/Frameworks/QtNetwork.framework -F/Library/Frameworks/QtWebKit.framework
-F/Library/Frameworks/QtSql.framework
LIBS = $(SUBLIBS) -F/Library/Frameworks -L/Library/Frameworks -framework QtSql -framework QtWebKit
-framework phonon -framework QtDBus -framework QtXml -framework QtNetwork -framework SystemConfiguration
-framework QtGui -framework Carbon -framework AppKit -framework QtCore -lz -lm -framework ApplicationServices
В INCPATH надо добавить пути к QtNetwork.framework, QtSql.framework, QtWebKit.framework и любому другом фреймворку по типу, как подключен QtCore. То же самое для LFLAGS и LIBS. Теперь достаточно запустить сборку, и вс соберется, как надо.
Внимание! Строки этих опций не должны содержать перевода строк!
После обновления Qt он "потерял" плагин к MySQL. Для ручной сборки этого плагина нужно:
- Заголовочные файлы MySQL (
sudo port install mysql-devel
); - Исходники Qt;
- Возможно исходники MySQL для сборки libmysqlclient.so (в самом низу страницы);
- Инструкция по ручной сборке плагина.
Переходим в папку src/plugins/sqldrivers/mysql в папку с исходниками Qt:
cd $QTDIR/src/plugins/sqldrivers/mysql
qmake -o Makefile "INCLUDEPATH+=/usr/local/include" "LIBS+=-L/usr/local/lib -lmysqlclient_r" mysql.pro
make
sudo make install
Надо будет исправить путь в переменной LIBS на то, где находится lmysqlclient_r.* (в моем случае — это /usr/local/lib/mysql).
Если этого будет недостаточно или такого файла не окажется, качаем исходники MySQL, в папке с исходниками выпоняем:
./configure --without-server
make && sudo make install
После чего собираем плагин.