Я тоже намучался с eXaro, но все-таки собрал его. Использовать сборку не пробовал. Если у вас она заработает, обязательно отпишитесь, интересно же!
Версия eXaro, которая есть у меня (2.0.0), зависит от:
LPNG 1.2.41 (есть более свежая версия, здесь:
http://www.libpng.org/pub/png/libpng.html можно найти все версии, а это -
http://prdownloads.sourceforge.net/libpng/libpng-1.2.42.tar.gz?download - прямая ссылка на скачивание версии 1.2.42),
PropertyEditor 2.1.3 (
http://propertyeditor.googlecode.com/files/propertyeditor-2.1.3.tar.lzma),
Quazip 2008-09-17 0.2.3 (причем нужен специальный, под CMake заточенный. Можно вот этот попробовать:
http://exaro.googlecode.com/files/quazip-cmaked.tar.bz2),
Zint 2.2.1 (
http://exaro.googlecode.com/files/zint-for-exaro.tar.bz2),
Zlib 1.2.3 (
http://www.zlib.net/zlib123.zip).
eXaro:
http://exaro.googlecode.com/files/exaro_1.90.0.tar.lzma (rc 2.0)
CMake версии 2.8.0. Взять можно здесь:
http://www.cmake.org/files/v2.8/cmake-2.8.0-win32-x86.exe.
MinGW (v3.81) (
http://www.mingw.org/), у меня он установлен вместе с Qt SDK 2009.05-rc1.
Опять же, у продуктов могут быть новые версии, а мои версии могут не совпадать с теми, что закачиваются (если закачиваются) по ссылкам. Я добывал библиотеки отовсюду: из Интернета, из собственных архивов, от друга и т.п. Как вы понимаете, есть риск, что винегрет окажется невкусным.
Чтобы упростить дело, я создал сборку. В ней лежат все необходимые библиотеки, в одном месте собраны h-фалы, а для будущих бинарников подготовлены папки.
Архив моей сборки доступен здесь:
https://sourceforge.net/projects/graninascommon/files/eXaro%20src.rar/download, 21 мб. CMake’а в ней нет, его придется качать по ссылке выше.
Итак, сборка. Последовательность пакетов такая:
QUAZIP
LPNG
PROPERTY EDITOR
ZINT
EXARO
> ZLIB собирать не надо.
QUAZIP
В CMake’s GUI указываем путь к исходникам (у меня это «D:/Qt/eXaro src/distrib/quazip-cmaked») и путь к bin-папке («D:/Qt/eXaro src/distrib/quazip-cmaked/bin»). Если bin-папка пуста, ничего не произойдет. Нажимаем кнопку “Configure”, выбираем в открывшемся окне компилятор и видим, как CMake генерирует нам параметры компиляции. Потом он выдаст ошибку, мол, чего-то неправильно, и отобразит красные параметры, в которых сомневается. Рекомендую поставить отображение «Grouped View», чтобы проще ориентироваться в дебрях настроек. Замечу еще, что иногда CMake GUI тупит, и его нужно полностью перезагрузить, чтобы он не помнил старых значений. А лучше перезапускать его для каждой новой сборки.
Для quazip нам нужно настроить сущую мелочь – два параметра библиотеки ZLIB (ZLIB_INCLUDE_DIR и ZLIB_LIBRARY), и еще добавить один (кнопка «Add Entry»), а именно – LIBRARY_OUTPUT_PATH типа «Path». Этот параметр говорит компилятору mingw, куда выкладывать готовые бинарники. Его желательно устанавливать для каждого из пакетов, в противном случае будете вручную выуживать бинарники из папок с исходниками.
Значения параметров следующие:
ZLIB_INCLUDE_DIR = D:\Qt\eXaro src\includes\zlib\
ZLIB_LIBRARY = D:\Qt\eXaro src\bins\zlib\libzdll.a
LIBRARY_OUTPUT_PATH = D:\Qt\eXaro src\bins\quazip\
Естественно, у вас пути могут отличаться от моих.
Остальные параметры трогать не стоит. Снова нажимаем кнопку «Конфигурировать»; если краснота с параметров исчезла, значит, можно генерировать makefile’ы. Генерируем. Все хорошо?.. Идем в папку D:\Qt\eXaro src\distrib\quazip-cmaked\bin\ и выполняем команду mingw32-make. При успешной компиляции бинарники quazip появятся в папке, которую вы указали в параметре LIBRARY_OUTPUT_PATH. Кстати, компиляция – очень красивый процесс, разноцветная такая…
Теперь собираем LPNG. Принцип тот же. Загружаем папку исходников и bin-папку. Жмем «Конфигурировать». Видим ошибку и красноту. Изменяем параметры для библиотеки ZLIB (все то же самое, что и в предыдущем пункте). Изменяем параметр EXECUTABLE_OUTPUT_PATH:
EXECUTABLE_OUTPUT_PATH = D:\Qt\eXaro src\distrib\lpng1241\bin\exec
Добавляем параметр (если его нет) LIBRARY_OUTPUT_PATH:
LIBRARY_OUTPUT_PATH = D:\Qt\eXaro src\bins\lpng\.
Конфигурируем. Не прошло, снова краснота, на этот раз он просит библиотеку PNG. Я ее так и не нашел, если честно, так что на нее плюнул, – как ни странно, все собирается… Да, конфигурируем еще раз. СиМэйк обидится, но пережует красноту. Наконец, разрешена генерация, что мы и делаем. Приходим в папку D:\Qt\eXaro src\distrib\lpng1241\bin\, запускаем mingw32-make. Готова сборка!
Другие пакеты собираются аналогично, только есть несколько особенностей. В фале compiling.txt я схематически указал, какие параметры нужно настраивать, чтобы eXaro успешно собрался. Привожу этот файл:
QUAZIP
-> ZLIB
--> ZLIB_LIBRARY = bins\zlib\libzdll.a
--> ZLIB_INCLUDE_DIR = includes\zlib
-> LIBRARY_OUTPUT_PATH = \bins\quazip\
LPNG
-> ZLIB
--> ZLIB_LIBRARY = bins\zlib\libzdll.a
--> ZLIB_INCLUDE_DIR = includes\zlib
-> EXECUTABLE_OUTPUT_PATH = \lpng1241\bin\exec
-> LIBRARY_OUTPUT_PATH = \bins\lpng\
PROPERTY EDITOR
-> LIBRARY_OUTPUT_PATH = \bins\property editor\
ZINT
-> ZLIB
--> ZLIB_LIBRARY = bins\zlib\libzdll.a
--> ZLIB_INCLUDE_DIR = includes\zlib
-> LIBRARY_OUTPUT_PATH = \bins\zint\
-> PNG
--> PNG_LIBRARY = \bins\lpng\libpng12_static.a
--> PNG_PNG_INCLUDE_DIR =
-> QR
--> QR_INCLUDE_DIR =
--> QR_LIBRARY =
EXARO
-> PROPERTYEDITOR
--> PROPERTYEDITOR_INCLUDE_DIR = (! Важно оставить пустой, иначе придется пересобирать CMake'ом)
--> PROPERTYEDITOR_LIBRARY = \bins\property editor\libPropertyEditor.dll
-> QUAZIP
--> QUAZIP_INCLUDE_DIR = \includes\quazip
--> QUAZIP_LIBRARY = \bins\quazip\libquazip.dll.a
-> QZINT
--> QZINT_INCLUDE_DIR = \includes\zint
--> QZINT_LIBRARY = \bins\zint\libQZint.dll.a
-> ZINT
--> ZINT_INCLUDE_DIR = \includes\zint
--> ZINT_LIBRARY = \bins\zint\libZint.dll.a
-> LIBRARY_OUTPUT_PATH = \bins\exaro\
Особо стоит отметить Property Editor. Если указать ту саму папку (PROPERTYEDITOR_INCLUDE_DIR), то происходит что-то странное, скрытно прописывается какой-то дряный параметр, и eXaro в конечном итоге не собирается. Более того, приходится убивать содержимое папки D:\Qt\eXaro src\distrib\exaro_2.0.0\bin\, перезапускать CMake GUI, и только тогда песобирать eXaro, снова настраивая все параметры.
А, да, еще: h-файлы quazip должны лежать в папке «.\includes\quazip\». Это связано с тем, что подключаются они так:
#include <quazip/quazip.h>
QR – это еще одна библиотека, которую я не нашел. Сборка без нее проходит успешно, только компилятор говорит, что-де, будут недоступны некоторые функции. Ну и шут с ними. За решением этой проблемы лучше обращаться к авторам, а для меня это был, скорее, спортивный интерес. Собрать-то я ее собрал, а пользуюсь пока что NCReport’ом. Но авторов всячески поддерживаю, ибо они делают нужную вещь.
Успехов и им, и вам.
P.S. Если что непонятно, спрашивайте.