0

我对 CMake 还是很陌生,所以绝对欢迎提供反馈。所以,我正在尝试构建一个简单的应用程序,最终应该使用 library 创建一个 pdf libharu

我想我想出了如何链接图书馆。但我仍然收到 findpng 模块的构建错误(我想libharu取决于它)

建造

CMakeLists.txt:

cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR)     # current latest stable version (if lower give FATAL_ERROR)
project(pdf_generator VERSION 0.1.0)                  # name of the project, version.

file(GLOB TARGET_SRC "./src/*.cpp")                   # Creates variable, using globbing.

include_directories(${PROJECT_SOURCE_DIR}/include)    # list of directories to be used as header search paths.
add_executable(main ${TARGET_SRC})                    # Create an executable of set of source files [exe name files to bundle].



find_library(libhpdf_location NAMES libhpdf.a)        # find the location of libhpdf.a and save the value in the variable libhpdf_location.
message(STATUS ${libhpdf_location})                   # print status of variable.

add_library(libhpdf STATIC IMPORTED)                  # Add library via a static import.
set_target_properties(
  libhpdf PROPERTIES
  IMPORTED_LOCATION ${libhpdf_location}
)

target_link_libraries(main libhpdf)
4

2 回答 2

3

我以前从未使用过那个特定的库,但是在 GitHub 上浏览他们的 CMakeLists.txt 似乎 libharu 对 libpdf 和 zlib 有可选的依赖项。在不知道您如何构建您的 libharu 版本的情况下,我将假设两者都是必需的。

幸运的是,CMake 为 libpng 和 zlib 提供了 find-modules,因此添加以下内容应该可以工作:

find_package(PNG REQUIRED)
find_package(ZLIB REQUIRED)

set_target_properties(libhpdf
  PROPERTIES
    INTERFACE_LINK_LIBRARIES "ZLIB::ZLIB;PNG::PNG"
)
于 2021-02-24T23:59:09.297 回答
1

看起来您需要做的就是告诉 cmake 链接 libpng。

于 2021-02-24T23:53:46.473 回答