我正在使用CMake和MinGW32进行一项小型的C++项目,需要使用libcurl库,但是当我尝试链接静态构建的libcurl.a时,出现了未定义引用错误。
undefined reference to `_imp__curl_easy_init'
undefined reference to `_imp__curl_easy_setopt'
undefined reference to `_imp__curl_easy_perform'
undefined reference to `_imp__curl_easy_getinfo'
undefined reference to `_imp__curl_easy_strerror'
我有cURL源代码在dep/curl文件夹中,我的源代码在src文件夹中。以下是我的项目CMakeLists.txt的内容:
project(ShutdownServer)
cmake_minimum_required(VERSION 2.8)
set(CMAKE_BUILD_TYPE "Release")
set(CURL_STATICLIB true)
set(BUILD_CURL_EXE false)
add_subdirectory(dep/curl)
set(TARGET_NAME "ShutdownServer")
set(LIBCURL_DIR ${PROJECT_SOURCE_DIR}/dep/curl)
aux_source_directory(src SRC_LIST)
add_executable(${TARGET_NAME} ${SRC_LIST})
find_path(LIBCURL_INCLUDE_DIR curl/curl.h HINTS ${LIBCURL_DIR}/include)
include_directories(${LIBCURL_INCLUDE_DIR})
add_dependencies(${TARGET_NAME} libcurl)
set(LIBS ${LIBS} ws2_32)
set(LIBS ${LIBS} iphlpapi)
set(LIBS ${LIBS} libcurl)
target_link_libraries(${TARGET_NAME} ${LIBS})
set(CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -static-libstdc++")
当我将CURL_STATICLIB选项切换为false,并动态构建libcurl时,项目可以成功构建,但我更希望将所有内容构建到一个二进制文件中。请问有什么问题吗?