boost的filestem庫
- C++在17版本的標準庫中引入了一個filesystem庫,用來處理文件路徑,以及文件訪問。很多編譯器對filesystem庫的支持還不是很好。為了解決這個問題,可以臨時使用boost::filesystem來替代。
- 其實C++17標準中的filesystem庫就是從boost::filesystem演進而來的,使用boost::filesystem有助于以后平滑演進到C++17的filesystem庫。
- boost(當前最新的版本是1.74.0)是一大堆庫的集合,fiesystem只是其中的一個庫。
boost上手文檔
- Boost Getting Started
- BoostGetting Started on Unix Variants?
boost::filestem入門教程
- filesystem tutorial
在MAC上安裝boost庫文件
-
使用命令 brew install boost
?
在clion中對其進行配置
- ?在CMakeLists.txt中對于boost部分進行配置
- find_package(Boost 1.74.0 REQUIRED COMPONENTS filesystem)
- cmake對boost有很好的支持,上面的指令翻譯如下:1,find_package(Boost 1.69.0 查找系統的boost, 目標版本是1.74.0;2,REQUIRED COMPONENTS filesystem) COMPONENTS用來限定boost的filesystem模塊,REQUIRED表明必須找到指定的模塊,否則會出錯
- 上面的find_package命令如果找到boost::filesystem,會在cmake中設置一些變量,比如Boost_LIBRARIES、Boost_INCLUDE_DIRS,需要在編譯目標上使用這些變量。
其余的配置選項參考如下
cmake_minimum_required(VERSION 3.16)
project(KeyManager)set(CMAKE_CXX_STANDARD 11)find_package(Boost 1.74.0 REQUIRED COMPONENTS filesystem)
include_directories(${Boost_INCLUDE_DIRS})add_executable(KeyManager include/sdf/sdf.h include/sdf/SqliteManager.hsrc/SqliteManager.cppsrc/test.cpp include/sdf/KMException.h src/KMException.cpp include/sdf/logging.h src/logging.cpp src/KeyManager.cpp)
- 最為核心的是find_package和include_directories
具體使用
#include <iostream>
#include <boost/version.hpp>using namespace std;int main() {cout << "Hello, World!" << endl;cout << "Boost版本:" << BOOST_VERSION << endl;return 0;
}
參考鏈接
- boost的filesystem庫
- C++: Mac上安裝Boost庫并使用CLion開發