【问题标题】:Linking libcurl with CMake on Windows在 Windows 上将 libcurl 与 CMake 链接
【发布时间】:2020-07-13 05:31:33
【问题描述】:

如果我尝试构建 cURL,它会显示以下输出:

Checking Build System
  Building Custom Rule C:/CPP/Projects/WebsiteGuardian/CMakeLists.txt
LINK : warning LNK4098: Standardbibliothek "LIBCMTD" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Biblioth
ek verwenden. [C:\CPP\Projects\WebsiteGuardian\build\WebsiteGuardian.vcxproj]
  WebsiteGuardian.vcxproj -> C:\CPP\Projects\WebsiteGuardian\build\Debug\WebsiteGuardian.exe
  Building Custom Rule C:/CPP/Projects/WebsiteGuardian/CMakeLists.txt

我这样构建它:我从这里下载了当前的 .zip:curl.haxx.se/download.html 之后,我使用以下命令构建 curl:“Set RTLIBCFG=static”和“nmake /f Makefile.vc mode=静态 VC=15 机器=x86 调试=否”。我在我的项目文件夹中复制了 include- 和 lib 目录。它也会成功找到。我的 CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(WebsiteGuardian CXX)

set(CMAKE_CXX_STANDARD 17)
set(CURL_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include)
set(CURL_LIBRARY ${CMAKE_SOURCE_DIR}/lib/libcurl_a_debug.lib )

add_definitions(-DCURL_STATICLIB)
find_package(CURL REQUIRED)
include_directories(${CURL_INCLUDE_DIR})

add_executable(WebsiteGuardian "src/main.cpp")
target_link_libraries(WebsiteGuardian ${CURL_LIBRARY} wldap32 ws2_32 Crypt32.lib Wldap32 Normaliz)

【问题讨论】:

  • 不,它显示了相同的输出。
  • 欢迎来到 Stack Overflow!你有安装 curl 吗?
  • 如果你想链接一个库,在CURL_LIBRARY变量中指定的绝对路径,只需链接这个路径:target_link_libraries(WebsiteGuardian ${CURL_LIBRARY})
  • 谢谢^^。我从这里下载了当前的 .zip:curl.haxx.se/download.html 之后,我使用以下命令构建 curl:“Set RTLIBCFG=static”和“nmake /f Makefile.vc mode=static VC=15 MACHINE=x86 DEBUG=no”。我在我的项目文件夹中复制了 include- 和 lib 目录。它也会成功找到: -- Found CURL: -lcurl (found version "7.69.1")
  • @Tsyvarev 像这样:target_link_libraries(WebsiteGuardian ${CURL_LIBRARY} wldap32 ws2_32) ?

标签: cmake libcurl


【解决方案1】:

感谢您的许多回答。这对我来说很好:

cmake_minimum_required(VERSION 3.10)
project(WebsiteGuardian CXX)

set(CMAKE_CXX_STANDARD 17)
set(CURL_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include)
set(CURL_LIBRARY ${CMAKE_SOURCE_DIR}/lib/libcurl_a_debug.lib )
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")

add_definitions(-DCURL_STATICLIB)

find_package(CURL REQUIRED)
include_directories(${CURL_INCLUDE_DIR})

add_executable(WebsiteGuardian "src/main.cpp")
target_link_libraries(WebsiteGuardian ${CURL_LIBRARY} wldap32 ws2_32 Crypt32.lib Wldap32 Normaliz)

【讨论】:

    猜你喜欢
    • 2021-09-16
    • 2018-01-22
    • 2018-10-23
    • 2021-02-13
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多