Windows下CMake链接ws2_32.lib失败问题求助
解决CMake链接ws2_32.lib的问题
你的CMakeLists.txt存在几个关键错误,以下是修正方案和说明:
原配置的问题点
find_package("ws2_32.lib")用法错误:ws2_32是Windows系统自带的标准库,不需要用find_package查找- 指令顺序混乱:
target_link_libraries调用时,目标可执行文件和源文件变量都未定义,且参数顺序完全错误 - 链接逻辑错误:
target_link_libraries需要先指定目标,再声明要链接的库
修正后的CMakeLists.txt
cmake_minimum_required(VERSION 3.2) project(MYHTTP_BASE_C++) set(CMAKE_PROGRAM_PATH ${CMAKE_SOURCE_DIR}/bin) include_directories(${CMAKE_SOURCE_DIR}/inc) # 先收集src目录下的所有源文件 aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC) # 创建可执行文件目标 add_executable(myhttp ${SRC}) # 链接ws2_32库,CMake会自动处理Windows下的.lib后缀或MinGW下的-l参数 target_link_libraries(myhttp ws2_32)
关键说明
- CMake是顺序执行指令的,必须遵循「收集源文件 → 创建目标 → 链接库」的顺序
- 对于Windows系统级库(如ws2_32、kernel32),直接在
target_link_libraries中写库名即可,CMake会自动定位到对应的库文件 - 该配置在MinGW环境下会自动转换为你手动编译时的
-lws2_32参数,效果完全一致
内容的提问来源于stack exchange,提问作者hello CPP
相关产品推荐
相关产品推荐

