crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Сборка чужого проекта с помощью CMake, cmake + taglib
Denzel
  опции профиля:
сообщение 20.2.2010, 1:21
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 22.1.2010
Пользователь №: 1395

Спасибо сказали: 0 раз(а)




Репутация:   0  


По совету модератора выношу в отдельную тему из этого топика.

Задачка: Заставить проект Qt работать с библиотекой taglib.
Имеются исходники (~1mb) библиотеки для работы с тегами аудио файлов. На оффсайте написано, что сборка под win осуществляется через cmake. Собственно просьба: более менее подробно расписать как собрать из исходников библиотеку ну и всю эту радость прикрутить к проекту.

Заранее спасибо.

PS.
На машине установлен голый cmake, так что если требуется какая-либо дополнительная его настройка, не поленитесь объяснить как "допилить".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.2.2010, 8:41
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


при сборке CMake'ом необходимо обратить внимание на такие особенности (отличия от распространённого подхода с qmake):
1) отдельный каталог для исходников
2) отдельный каталог для make-файлов и прочих служебных штук
3) отдельный каталог для результатов сборки.

Тепрь, требования (Н.У.):
1) пути как обычно - без пробелов
2) В переменной окружения PATH, должно быть видно Qt и компилятор
3) Придумай такую структуру каталогов (это не обязательно, это я так делаю):
- path/to/lib/src - в этом каталоге должен лежать файл CMakeLists.txt (созданный авторами библитеки)
- path/to/lib/tmp
- path/to/lib/build

Конфигурация:
1) Запусти программу path/to/cmake/bin/cmake-gui.exe
** Если появится диалог настройки компилятора, то выбери подходящий (напимер, "MinGW Makefiles - Use default native compiller")
2) В основном окне, в поле ввода "Where is the source code" укажи путь к path/to/lib/src
3) В основном окне, в поле ввода "Where to build the binares" укажи путь к path/to/lib/tmp (я не перепутал)
4) Ниже, в выпадающем списке, выбери "Simple View"
5) Нажми кнопку "Configure"
** Если появится диалог настройки компилятора, то выбери подходящий (напимер, "MinGW Makefiles - Use default native compiller")
6) Обычно после такой настройки появляются красный поля - недостающая информация, её нужно дополнить.
** Нужно ввести следующие данные (см. всплывающие подсказки у полей):
*** CMAKE_BUILD_TYPE - может принимать одно из значений Release или Debug
*** CMAKE_INSTALL_PREFIX - наш путь path/to/lib/build
*** и остальные, информацией на которые располагаешь
7) Ещё раз нажми кнопку "Configure"
** Если кнопка "Generate" не появилась, то повтори процедуру заполнения красных полей, ну и не забывай читать лог в нижней части (в первую очередь красный текст)
8 ) После завершения генерации, можешь закрыть CMake-GUI и запустить командную строку
9) Перейди в каталог path/to/lib/tmp
10) Скомандуй make, начнётся компиляция/сборка
11) Скомандуй make install, вновь созданный бинари будут скопированы в path/to/lib/build

ВСЁ!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Denzel
  опции профиля:
сообщение 20.2.2010, 18:47
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 22.1.2010
Пользователь №: 1395

Спасибо сказали: 0 раз(а)




Репутация:   0  


Что-то никак не получается собрать, думаю малость совсем осталось:

Cmake-Gui выдает следующее:
CMake Error at CMakeLists.txt:206 (INSTALL):
  install Library TARGETS given no DESTINATION!

(Подробности настройки см. на скрине)

Не понял только за что отвечают опции LIBRARY_OUTPUT_PATH и EXECUTABLE_OUTPUT_PATH, решил сунуть туда просто пустые папки (опять же, см. скрин), посмотреть что сгенерит, однако до этого не доходит...


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.2.2010, 18:57
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Denzel @ 20.2.2010, 21:47) *
CMakeLists.txt:206 (INSTALL):
приведи фрагмент этого файла в районе указанной строки, может сам файл содержит какие-то недочёты
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Denzel
  опции профиля:
сообщение 20.2.2010, 19:31
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 22.1.2010
Пользователь №: 1395

Спасибо сказали: 0 раз(а)




Репутация:   0  


if(ENABLE_STATIC)
    add_library(tag STATIC ${tag_LIB_SRCS})
    set_target_properties(tag PROPERTIES COMPILE_DEFINITIONS TAGLIB_STATIC)
else(ENABLE_STATIC)
    add_library(tag SHARED ${tag_LIB_SRCS})
endif(ENABLE_STATIC)

TARGET_LINK_LIBRARIES(tag )
if(ZLIB_FOUND)
    TARGET_LINK_LIBRARIES(tag ${ZLIB_LIBRARIES})
endif(ZLIB_FOUND)

SET_TARGET_PROPERTIES(tag PROPERTIES
        VERSION ${TAGLIB_LIB_MAJOR_VERSION}.${TAGLIB_LIB_MINOR_VERSION}.${TAGLIB_LIB_PATCH_VERSION}
        SOVERSION ${TAGLIB_LIB_MAJOR_VERSION}
        INSTALL_NAME_DIR ${LIB_INSTALL_DIR}
        DEFINE_SYMBOL MAKE_TAGLIB_LIB
        LINK_INTERFACE_LIBRARIES ""
)
[b]INSTALL(TARGETS tag
    LIBRARY DESTINATION ${LIB_INSTALL_DIR}
    RUNTIME DESTINATION ${BIN_INSTALL_DIR}
    ARCHIVE DESTINATION  ${LIB_INSTALL_DIR}
)[/b]

INSTALL( FILES  tag.h fileref.h audioproperties.h taglib_export.h DESTINATION ${INCLUDE_INSTALL_DIR}/taglib)


Жирным выделен проблемный кусок кода. (строка 206 это: INSTALL(TARGETS tag))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 21.2.2010, 6:18
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Denzel @ 20.2.2010, 22:31) *
Жирным выделен
в тэге code ни какое форматирование не работает, кроме ассоциированной автоматической подсветки кода

как я понял нужно задать три переменные (LIB_INSTALL_DIR, BIN_INSTALL_DIR, LIB_INSTALL_DIR), если ты поменяешь в CMake-GUI способ отображения с "Simple View" на "Grouped View", то наверное ты увидишь эти переменные и сможешь их ввести
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
novichkov
  опции профиля:
сообщение 2.4.2010, 20:51
Сообщение #7


Студент
*

Группа: Участник
Сообщений: 64
Регистрация: 20.3.2008
Из: Северодвинск
Пользователь №: 128

Спасибо сказали: 6 раз(а)




Репутация:   1  


Мне каким-то чудом удалось несколько месяцев назад скомпилировать taglib 1.6.1 в Windows, помню только, что потратил часа три. Могу выложить скомпиленную библиотеку, хотя и понимаю, что здесь главное самому разобраться.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.11.2024, 20:05