2

我的项目使用了 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}
)

构建错误:

CMakeLists.txt:13 (find_package) 处的 CMake 警告:通过在 CMAKE_MODULE_PATH 中未提供“Findquazip.cmake”,该项目已要求 CMake 查找“quazip”提供的包配置文件,但 CMake 没有找到。

找不到由“quazip”提供的具有以下任何名称的软件包配置文件:

quazipConfig.cmake
quazip-config.cmake

将“quazip”的安装前缀添加到 CMAKE_PREFIX_PATH 或将“quazip_DIR”设置为包含上述文件之一的目录。如果“quazip”提供单独的开发包或SDK,请确保已安装。

CMakeLists.txt:37 (target_link_libraries) 处的 CMake 错误:target_link_libraries 的关键字签名已与目标“Archiver”一起使用。对 target_link_libraries 的所有使用都必须是 all-keyword 或 all-plain。

关键字签名的用途在这里:

  • CMakeLists.txt:31 (target_link_libraries)
4

1 回答 1

1

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

也就是说,要在您的代码中使用quazipwith ,请添加以下行:zlib

include_directories(${QUAZIP_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${QUAZIP_LIBRARIES})
于 2019-01-16T21:00:52.720 回答