avalon / разработка / сборка под MacOS
Итак, вы решили собрать avalon под МакОСью? Вам и тапки в руки :)
Существует два способа собрать avalon — простой и сложный. Если повезет, то удастся собрать простым путем. Если нет, то — сложным (дополнительно был описан очень простой путь).
что нам нужно?
- Subversion:
- http://subversion.tigris.org/getting.html;
- Если уже есть MacPorts, то:
sudo port install subversion
Вообще, советую иметь у себя в системе MacPorts, потому что вщь сильно полезная и, возможно, понадобится нам в сложном способе сборки Авалона.
- Qt — можно скачать только framework (см. следующий пункт);
- XCode/QtCreator (по идее опционально, но есть свои тонкости):
путь легкий
Путь легкий А выглядит так:
- Качаем авалон (svn checkout svn://opensvn.ru/avalon/trunk);
- выполняем qmake;
- выполняем qmake -project;
- запускаем avalon.xcodeproj в XCode;
- запускаем сборку.
voilá
Путь легкий B выглядит так:
- Качаем авалон (svn checkout svn://opensvn.ru/avalon/trunk);
- выполняем qmake;
- запускаем avalon.pro в QtCreator;
- запускаем сборку.
Путь легкий C выглядит так:
- Описан тут: очень простой путь
Путь легкий D выглядит так:
- Качаем авалон (svn checkout svn://opensvn.ru/avalon/trunk);
- выполняем
cmake -G "XCode"
- Открываем Avalon.xcodeproj в XCode;
- в свойствах таргетов ALL_BUILD и avalon убираем опции компилятора std=c++0x
- запускаем сборку.
voilá
Естественно, надо будет еще настроить базу данных (с помощью sql-файлов для MySQL или SQLite, расположеных в папке dev).
Зачем нжно запускать именно в 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. Теперь достаточно запустить сборку, и вс соберется, как надо.
Внимание! Строки этих опций не должны содержать перевода строк!
особое внимание к MySQL
После обновления Qt он «потерял» плагин к MySQL. Для ручной сборки этого плагина нужно:
- Заголовочные файлы MySQL (sudo port install mysql-devel);
- Исходники Qt ( http://get.qtsoftware.com/qt/source/qt-mac-opensource-src-4.5.1.tar.gz);
- Возможно исходники MySQL для сборки libmysqlclient.so ( http://dev.mysql.com/downloads/ в самом низу страницы);
- Инструкция по ручной сборке плагина.
Переходим в папку 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
После чего собираем плагин.
