在Windows 10 x64中使用CMAKE,FetchContent和Visual Studio 2019链接构建libpng和zlib的链接错误

时间:2020-06-02 19:35:18

标签: cmake libpng

我正在尝试使用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文件为空。

1 个答案:

答案 0 :(得分:0)

我最近遇到了这个问题,我相信您还需要设置 ZLIB_LIBRARY cmake 变量。如果您使用 PNG_BUILD_ZLIB,libpng 需要设置此变量。

这可以很简单:

set(ZLIB_LIBRARY zlib)
相关问题