CMake BUILD 未定义参考 (findpng)

CMake BUILD undefined reference (findpng)

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

创建一个 pdf

我想我知道如何 link 图书馆了。但是我仍然收到 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)

看来您需要做的就是告诉 cmake 到 link libpng。

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

幸运的是,CMake 为 libpng 和 zlib 提供了查找模块,因此添加以下内容应该有效:

find_package(PNG REQUIRED)
find_package(ZLIB REQUIRED)

set_target_properties(libhpdf
  PROPERTIES
    INTERFACE_LINK_LIBRARIES "ZLIB::ZLIB;PNG::PNG"
)