【问题标题】:Link error building libpng and zlib with CMAKE, FetchContent and Visual Studio 2019 in Windows 10 x64在 Windows 10 x64 中使用 CMAKE、FetchContent 和 Visual Studio 2019 链接错误构建 libpng 和 zlib
【发布时间】:2020-09-21 09:29:26
【问题描述】:

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

【问题讨论】:

  • 您似乎仍在单独构建它们,因此libpng 仍然不了解zlib。像这样构建 libpng 意味着您已经安装了 zlib 并且可以在您机器上的某个地方访问。
  • 好吧,我正在尝试先构建 zlib,然后告诉 libpng zlib 的构建位置,这样我就可以第二个构建 libpng。从 libpng 的 CMakeLists.txt 中,我认为可以这样做:` # 允许用户指定 Zlib 的位置。 # 如果 zlib 作为子项目与此一起构建,则很有用。 option(PNG_BUILD_ZLIB "自定义 zlib 位置,否则使用 find_package" OFF) if(NOT PNG_BUILD_ZLIB) find_package(ZLIB REQUIRED) include_directories(${ZLIB_INCLUDE_DIR}) endif() `

标签: cmake libpng


【解决方案1】:

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

这可以很简单:

set(ZLIB_LIBRARY zlib)

【讨论】:

    猜你喜欢
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2021-08-05
    • 2021-08-10
    • 2021-02-23
    相关资源
    最近更新 更多