Как подключить библиотеку QuaZip в CMake - PullRequest
0 голосов
/ 16 января 2019

Мой проект использует библиотеку QuaZip, и мне нужно собрать проект через CMake.Как добавить эту библиотеку в CMakeLists?Из библиотеки мне нужен JlCompress

Мои CMakeLists:

cmake_minimum_required(VERSION 3.6)
#set_property(GLOBAL PROPERTY USE_FOLDERS ON)
#set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "cmake")

set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)

project(Archiver LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

find_package(Qt5 REQUIRED COMPONENTS Core Widgets Gui)
find_package(zlib)
find_package(QuaZip5)
include_directories(${QUAZIP_INCLUDE_DIRS})

set(project_ui
    mainwindow.ui)
set(project_headers
    archive.h
    mainwindow.h)
set(project_sources
    main.cpp
    archive.cpp
    mainwindow.cpp)

qt5_wrap_ui(project_headers_wrapped ${project_ui})
qt5_wrap_cpp(project_sources_moc ${project_headers})

add_executable(${PROJECT_NAME} ${project_headers} ${project_sources} 
    ${project_sources_moc} ${project_headers_wrapped})

target_link_libraries(${PROJECT_NAME} 
    PUBLIC 
    Qt5::Core
    Qt5::Gui
    Qt5::Widgets
    ${QUAZIP_LIBRARIES}
)

Ошибка сборки:

Предупреждение CMake на CMakeLists.txt: 13 (find_package): Непредоставляя «Findquazip.cmake» в CMAKE_MODULE_PATH, этот проект попросил CMake найти файл конфигурации пакета, предоставленный «quazip», но CMake не нашел его.

Не удалось найти файл конфигурации пакета, предоставленный «quazip»с любым из следующих имен:

quazipConfig.cmake
quazip-config.cmake

Добавьте префикс установки «quazip» в CMAKE_PREFIX_PATH или установите «quazip_DIR» в каталог, содержащий один из указанных выше файлов.Если «quazip» предоставляет отдельный пакет разработки или SDK, убедитесь, что он установлен.

Ошибка CMake в CMakeLists.txt: 37 (target_link_libraries): ключевое слово подпись для target_link_libraries уже использовалось с целью "Archiver».Любое использование target_link_libraries с целью должно быть либо полностью ключевым словом, либо полностью простым.

Здесь используется ключевое слово подписи:

  • CMakeLists.txt: 31 (target_link_libraries)

1 Ответ

0 голосов
/ 17 января 2019

Сценарий поиска для quazip называется FindQuaZip5.cmake (он переименовывается во время установки). Так что для поиска quazip нужно использовать

find_package(QuaZip5)

Значение скрипта поиска описано в его заголовке:

# QUAZIP_FOUND               - QuaZip library was found
# QUAZIP_INCLUDE_DIR         - Path to QuaZip include dir
# QUAZIP_INCLUDE_DIRS        - Path to QuaZip and zlib include dir (combined from QUAZIP_INCLUDE_DIR + ZLIB_INCLUDE_DIR)
# QUAZIP_LIBRARIES           - List of QuaZip libraries
# QUAZIP_ZLIB_INCLUDE_DIR    - The include dir of zlib headers

То есть, для использования quazip с zlib в вашем коде, добавьте следующие строки:

include_directories(${QUAZIP_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${QUAZIP_LIBRARIES})
...