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

#include  //包含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;
}
csdn代码防404

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 指定 两个目录哈