如何用MinGW+CMake在Windows生成.lib静态库及.dll动态库?
Windows下MinGW+CMake生成.lib静态库的解决办法
MinGW工具链默认沿用类Unix的库命名规则,静态库后缀为.a,这是正常现象。如果需要生成后缀为.lib的静态库,可以通过以下两种方式配置CMake:
方式1:修改CMakeLists.txt
在定义静态库的代码前,添加变量设置强制修改后缀:
# 设定静态库输出后缀为.lib set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib") # 定义你的静态库 add_library(MyStaticLib STATIC src/foo.cpp src/bar.cpp)
方式2:CMake命令行传参
如果不想改动项目的CMakeLists.txt,在执行CMake生成构建文件时,通过-D参数指定变量:
cmake -G "MinGW Makefiles" -DCMAKE_STATIC_LIBRARY_SUFFIX=".lib" ../你的源码目录
额外说明
- 这种修改只是更改文件后缀,库的内部格式依然是MinGW兼容的,无法直接供MSVC编译器使用。如果需要MSVC标准的
.lib库,应该直接选择MSVC作为CMake生成器(比如Visual Studio 2022)。 - 若同时需要调整动态库的导入库后缀,可添加以下设置:
# 动态库本体后缀保持为.dll set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll") # 将动态库的导入库后缀改为.lib set(CMAKE_IMPORT_LIBRARY_SUFFIX ".lib")
内容的提问来源于stack exchange,提问作者user23620257
相关产品推荐
相关产品推荐

