我正在尝试使用CMAKE构建libpng,但是它需要zlib,所以我试图同时构建它们,但没有任何运气。我喜欢FetchContent,因此我可以指定GIT_TAG并在将来需要时轻松更新。现在,我只有一个空白的test.c文件来说明问题。
我收到以下链接错误:
LNK1120 1 unresolved externals
MinimalApp\out\build\x64-Debug\_deps\libpng-build\png-fix-itxt.exe
LNK2019 unresolved external symbol crc32 referenced in function main
当我使用此CMakeLists.txt构建
cmake_minimum_required (VERSION 3.14)
include(FetchContent)
project(MinimalApp)
FetchContent_Declare(
zlib
GIT_REPOSITORY https://github.com/madler/zlib.git
GIT_TAG v1.2.11
)
FetchContent_MakeAvailable(zlib)
set(ZLIB_INCLUDE_DIR ${zlib_SOURCE_DIR} ${zlib_BINARY_DIR})
set(PNG_BUILD_ZLIB ON CACHE BOOL "Custom zlib Location, else find_package is used")
FetchContent_Declare(
libpng
GIT_REPOSITORY https://github.com/glennrp/libpng.git
GIT_TAG v1.6.37
)
FetchContent_MakeAvailable(libpng)
include_directories(
${libpng_SOURCE_DIR}
${libpng_BINARY_DIR}
)
add_library(MinimalApp SHARED
"test.c"
)
set_target_properties(MinimalApp PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../bin/${CMAKE_BUILD_TYPE}/x64
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/../bin/${CMAKE_BUILD_TYPE}/x64
)
我的test.c文件为空。
答案 0 :(得分:0)
我最近遇到了这个问题,我相信您还需要设置 ZLIB_LIBRARY
cmake 变量。如果您使用 PNG_BUILD_ZLIB
,libpng 需要设置此变量。
这可以很简单:
set(ZLIB_LIBRARY zlib)