windows下使用cmake编译mingw版本的bcg729
跨平台移植开发,需要将bcg729开源库移植到windows,找了半圈,没看到有现成的dll下载,只能自行编译,github下载链接,编译也很简单,具体如下,linux下几行命令的事情,但是windows上麻烦点,我这边需要编译mingw版本的库,需要下载cmake+mingw
1.下载CMake
我这边使用的cmake版本是camke3.28.3github下载链接,选择下面的下载即可,安装过程记得选择勾选添加到环境配置。
win+r,输入cmd,打开命令窗口,输入cmake --version,如果能够看到版本号,则说明环境OK
2.下载mingw-w64
打开winlibs官网链接,点击download,选择最新版本,具体如下,根据需要自行选择下载,我选择最新版本,下载后解压,然后将压缩包里面的bin文件夹的决对路径添加到环境变量的path里面;打开打开命令窗口,输入mingw32-make --version之后,能够看到版本,说明环境是好的;
3.编译bcg729
编译我使用命令行编译,不用cmake的gui窗口,cd进入bcg729的源码目录,就是有CMakeList.txt的哪个目录;直接输入以下命令:
mkdir build
cd build
cmake .. -G "MinGW Makefiles"
进行编译,结果报错,找的是msvc的编译器去了
试了多种方法,硬是找不到,于是在CMakeList.txt同级目录新建了一个toolchain-mingw.cmake,添加以下内容,记得替换你自己mingw的路径
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_C_COMPILER "C:/mingw-w64/mingw64/bin/gcc.exe")
set(CMAKE_CXX_COMPILER "C:/mingw-w64/mingw64/bin/g++.exe")
再次运行如下命令
cmake .. -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw.cmake
还是报错
多次测试,把CMakeList.txt中的最后一行add_subdirectory(build)屏蔽了后,就成功运行了
补充说明,默认只生成了静态库,如果想要同时生成静态库库和动态库,configure命令后面需增加 -DENABLE_STATIC=ON -DENABLE_SHARED=ON,完整命令如下:
cmake .. -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE=../toolchain-mingw.cmake -DENABLE_STATIC=ON -DENABLE_SHARED=ON
最后,生成的库如下: