zoukankan      html  css  js  c++  java
  • Windows MinGW 安装 Boost 与 CLion 的配置

    关于 boost 在 Windows 下的使用 gcc 安装与 CLion 的配置, 能够查到的英文资料都比较少, 踩过坑后记录一下.

    MinGW 安装 Boost

    Boost Download

    下载并解压 Boost 文件夹到一个稳定的文件夹, 此时我的文件名为 boost_1_69_0.

    在进行以下几步之前请先把 gcc 添加至环境变量.

    在该文件夹目录下打开命令行, 首先执行:

    bootstrap gcc
    

      如果你只安装指定的少数几个库, 可以使用:

    b2 --show-libraries
    

      得到你可以在这里单独安装的所有库的名称. 然后你可以安装指定的某个库, 如 program_options 和 filesystem:

    b2 toolset=gcc --with-program_options --with-filesystem
    

      或者你想一次性编译完毕, 以后就无需再进行编译:

    b2 toolset=gcc
    

     以上的指令复制至 cmd 可直接执行

    全部编译完成的时间视处理器性能而定, 大概在十分钟左右.

    此时你可以在 boost 根目录下的 stage/lib 文件夹下看到以 a 为文件扩展名的静态库.

    CLion CMakeLists 配置 Boost

    网上搜索到的教程容易导致以下几个误区

    • 认为链接库的文件夹目录在 bootstrap_1_69_0/libs 下
    • 无法找到原因为什么无法成功 find_package

    在 Boost 的配置中, 需要指明 BOOST_ROOT, BOOST_INCLUDEDIR, BOOST_LIBRARYDIR 这三个变量. 我的 boost 文件夹放在 C:/Local :

    set(Boost_DEBUG on)
    set(Boost_DETAILED_FAILURE_MSG ON)
    #查看 Boost 配置问题所在
    set(BOOST_ROOT C:/Local/Boost_1_69_0)
    set(BOOST_INCLUDEDIR ${BOOST_ROOT})
    set(BOOST_LIBRARYDIR ${BOOST_ROOT}/stage/lib)
    find_package(Boost COMPONENTS REQUIRED program_options)

    提示 find_package 失败.

    查看 debug 信息:

    -- [ .../FindBoost.cmake:1809 ] Searching for PROGRAM_OPTIONS_LIBRARY_RELEASE: boost_program_options-mgw51-mt-1_69;boost_program_options-mgw51-mt;boost_program_options-mt-1_69;boost_program_options-mt;boost_program_options-mt;boost_program_options
    -- [ .../FindBoost.cmake:1862 ] Searching for PROGRAM_OPTIONS_LIBRARY_DEBUG: boost_program_options-mgw51-mt-d-1_69;boost_program_options-mgw51-mt-d;boost_program_options-mt-d-1_69;boost_program_options-mt-d;boost_program_options-mt;boost_program_options
    

      

    此时对照 stage/lib 文件夹下的文件名, 发现名称为libboost_program_options-mgw51-mt-d-x64-1_69.a 或libboost_program_options-mgw51-mt-d-x32-1_69.a

    因此, 只需将 x64 文件中的文件名删掉 “-x64” 即可.

    故在 stage 文件夹下新建一个 python3 重命名文件脚本:

    # -*- coding: utf-8 -*-
    # renamer.py
    
    from os import listdir, rename
    import re
    
    for filename in listdir('lib'):
        new_filename = re.sub('libboost(.*)-x64(.*).a', r'libboost12.a', filename)
        rename('lib/' + filename, 'lib/' + new_filename)
    

    执行后再次进行 cmake, 就可以成功 find_package

    此时按照网上教程, 完整的 CMakeLists.txt 为:

    cmake_minimum_required(VERSION 3.13)
    project(dot)
    
    set(CMAKE_CXX_STANDARD 14)
    
    set(Boost_DETAILED_FAILURE_MSG ON)
    set(Boost_DEBUG on)
    set(BOOST_ROOT C:/Local/Boost_1_69_0)
    set(BOOST_INCLUDEDIR ${BOOST_ROOT})
    set(BOOST_LIBRARYDIR ${BOOST_ROOT}/stage/lib)
    find_package(Boost COMPONENTS REQUIRED filesystem program_options)
    
    add_executable(dot main.cpp command.h)
    include_directories(${BOOST_ROOT})
    target_link_libraries(dot ${Boost_LIBRARIES})
    #Boost_LIBRARIES 为 find_package 自动生成的变量
    

      CLion 配置 Boost 完成.

     参考资料

    bat脚本根据mingw版本判断是否可编译32/64位程序(编译时mingw位数需要与系统对应)

    https://inhzus.com/posts/2019-02-12-setup-boost-in-clion-on-windows/

    https://www.boost.org/doc/libs/1_68_0/more/getting_started/windows.html#prepare-to-use-a-boost-library-binary

    在 Clion 中设置 Boost

  • 相关阅读:
    swoole 安装方法 使用即时聊天
    git的介绍以及简单应用
    curl的应用
    linux下监听和同步代码配置
    mac skim 修改背景色
    php 编译安装的一个 configure 配置
    mac mysql error You must reset your password using ALTER USER statement before executing this statement.
    yii2 控制器里 action 大小写组合造成的路由问题
    warning : json_decode(): option JSON_BIGINT_AS_STRING not implemented in xxx
    redis 自启动脚本
  • 原文地址:https://www.cnblogs.com/noticeable/p/14847682.html
Copyright © 2011-2022 走看看