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'libboost\1\2.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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM