windows 10 msys2 mingw64 使用指定boost cmake
说实话
msys2
没有把这两个隔离独立 挺蛋疼
msys
mingw
然后现在又有这么个玩意
ucrt
估计cmake 更蛋疼
懒鬼不编译测试方法
C:\msys64\usr\include\boost-1_76\boost
记住了 一定不要装
pacman -S BOOST XXX
装了的童鞋
export PATH=${PATH}:/usr/mingw64/lib:/mingw64/include
···方法2
LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
用这一句能找到 lib 但是cmake 不行!
pacman -S mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi
wget http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-boost-1.69.0-2-any.pkg.tar.xz
wget http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-icu-58.2-3-any.pkg.tar.xz
pacman -U mingw-w64-x86_64-icu-58.2-3-any.pkg.tar.xz
pacman -U mingw-w64-x86_64-boost-1.69.0-2-any.pkg.tar.xz
自己编译
Boost编译与使用 - 知乎 (zhihu.com) 自己编译的童鞋!!!!!一定不要用临时目录!!! 默认会有个 bin.v2 你有强迫症喜欢折腾就绕过我说的吧 继续瞎折腾
cmake 找不到 boost 问题
临时目录 b2 -j8 --build-dir=.\tmp --build-type=complete threading=multi link=shared address-model=64 toolset=gcc stage install --prefix=/usr
直接 install 目录 /usr
./b2 install --prefix=/usr
Linux编译和安装boost库_this_CAPSLOCK 的专栏-CSDN博客_boost
方法2未测试 CMake中引用Boost库_jinzhu1911的专栏-CSDN博客
修改查找语句
我用的1.75
Boost 的编译(交叉)安装 & cmake find_package(Boost)_all for one,one for all-CSDN博客
find_package(Boost 1.75.0 COMPONENTS filesystem regex REQUIRED)
问题2
CMake Error at / /BoostConfig.cmake:240 (if):
原因:muduo目录下的CMakeLists.txt文件,第一行中cmake_minimum_required(VERSION 2.6)指定的cmake版本过低造成的
解决办法:把cmake_minimum_required修改成当前系统安装的cmake版本号就可以了
说白了你要编译的项目的 CMakeLists.txt 配置 cmake_minimum_required 版本号 不等于你用的 所以报错
最后测试
Linux下Boost编译安装_……-CSDN博客_boost安装 linux
#includecsdn代码防404//包含boost头文件 #include #include using namespace std; volatile bool isRuning = true; void func1() { static int cnt1 = 0; while(isRuning) { cout << "func1:" << cnt1++ << endl; boost::this_thread::sleep(1); } } void func2() { static int cnt2 = 0; while(isRuning) { cout << "\tfunc2:" << cnt2++ << endl; boost::this_thread::sleep(2); } } int main() { boost::thread thread1(&func1); boost::thread thread2(&func2); system("read"); isRuning = false; thread2.join(); thread1.join(); cout << "exit" << endl; return 0; }
g++ main.cpp -g -o main -lboost_thread-mt
对没错 -mt 我编译的带这个,注意你们编译的带不带 带就要带上
export PATH=${PATH}:/usr/lib:/usr/include
我的配置
由于我卸载了 pacman 的boost 导致搜捕到头
复制include 过去 C:\msys64\usr\include\boost-1_76 - C:\msys64\mingw64\include
复制lib 过去C:\msys64\usr\lib boost* C:\msys64\mingw64\lib
牛逼的童鞋可以用 -I -L 指定 两个目录哈