在 Windows 上将 libcurl 与 CMake 链接

The*_*mmy 1 cmake libcurl

如果我尝试构建 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
Run Code Online (Sandbox Code Playgroud)

我这样构建:我从这里下载了当前的.zip:curl.haxx.se/download.html 之后我使用以下命令构建curl:“Set RTLIBCFG=static”和“nmake /f Makefile.vc mode=static 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)
Run Code Online (Sandbox Code Playgroud)

The*_*mmy 5

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

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)
Run Code Online (Sandbox Code Playgroud)