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"
)
我对 CMake 还是很陌生,所以非常欢迎提供反馈。所以,我正在尝试构建一个简单的应用程序,最终应该使用库 libharu
.
我想我知道如何 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"
)