目录

一、 关于Boost库

二、使用Boost库

1.使用的命令及参数

(1)BOOST_INCLUDEDIR/BOOST_INCLUDE_DIR

(2)BOOST_LIBRARYDIR/BOOST_LIBRARY_DIR

(3)target_include_directories/include_directories

(4)target_link_directories/link_directories

2.源码

(1)CMakeLists.txt文件

(2).cpp文件

三、配置及构建


一、 关于Boost库

新版Boost库在VS IDE中的使用可参考C++ | boost库入门,头文件和静态库并没有安装在windows标准位置,所以在使用Boost库时,需要手动设置头文件和lib文件目录。

二、使用Boost库

1.使用的命令及参数

(1)BOOST_INCLUDEDIR/BOOST_INCLUDE_DIR

set(BOOST_INCLUDEDIR  "D:/thirdParties/boost_1_74_0")

(2)BOOST_LIBRARYDIR/BOOST_LIBRARY_DIR

set(BOOST_LIBRARYDIR  "D:/thirdParties/boost_1_74_0/stage/lib")

(3)target_include_directories/include_directories

给源文件添加头文件搜索路径:将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径。鉴于可能有不同目录相同名称的头文件,所以建议针对特定的target进行添加头文件的操作,即推荐用target_include_directories。

target_include_directories(testBoost ${Boost_INCLUDE_DIRS})

(4)target_link_directories/link_directories

  • link_directories:指定库文件的路径
  • target_link_directories:将目标文件与库文件进行链接(推荐)
target_link_directories(testBoost ${Boost_LIBRARY_DIRS})

2.源码

(1)CMakeLists.txt文件

注意:BOOST_ROOT, BOOST_INCLUDEDIR, BOOST_LIBRARYDIR在windows下需要设置,否则cmake找不到目录。

cmake_minimum_required(VERSION 3.5 FATAL_ERROR)project(useBoost LANGUAGES CXX)set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)#set(Boost_USE_STATIC_RUNTIME ON) #可选
#set(Boost_USE_STATIC_LIBS ON)#可选
#set(BOOST_ROOT "D:/thirdParties/boost_1_74_0/boost")#可选
set(BOOST_INCLUDEDIR  "D:/thirdParties/boost_1_74_0")#Boost_INCLUDE_DIR
set(BOOST_LIBRARYDIR  "D:/thirdParties/boost_1_74_0/stage/lib")#Boost_LIBRARY_DIR
#set(BOOST_NO_SYSTEM_PATHS ON)
#set(Boost_DEBUG on)
#set(Boost_NO_BOOST_CMAKE ON)
find_package(BOOST REQUIRED  COMPONENTS  system filesystem)#BOOST大写
if (NOT BOOST_FOUND)message("未发现Boost")
endif()
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
add_executable(testBoost test.cpp)
message(STATUS "Boost_INCLUDE_DIRS=${Boost_INCLUDE_DIRS}")
message(STATUS "Boost_LIBRARY_DIRS=${Boost_LIBRARY_DIRS}")message(STATUS "Boost_FILESYSTEM_LIBRARIES=${Boost_FILESYSTEM_LIBRARY}")#为空
message(STATUS "Boost_LIBRARIES=${BOOST_LIBRARIES}")#为空
#target_link_libraries(testBoost Boost::filesystem)#有问题
target_link_libraries(testBoost PUBLIC ${BOOST_LIBRARIES})

(2).cpp文件

#include <iostream>#include <boost/filesystem.hpp>using namespace std;
using namespace boost::filesystem;const char *say_what(bool b) { return b ? "true" : "false"; }int main(int argc, char *argv[]) {if (argc < 2) {cout<< "Usage: path_info path-element [path-element...]\n""Composes a path via operator/= from one or more path-element arguments\n""Example: path_info foo/bar baz\n"
#ifdef BOOST_POSIX_API"         would report info about the composed path foo/bar/baz\n";
#else // BOOST_WINDOWS_API"         would report info about the composed path foo/bar\\baz\n";
#endifreturn 1;}path p;for (; argc > 1; --argc, ++argv)p /= argv[1]; // compose path p from the command line argumentscout << "\ncomposed path:\n";cout << "  operator<<()---------: " << p << "\n";cout << "  make_preferred()-----: " << p.make_preferred() << "\n";cout << "\nelements:\n";for (auto element : p)cout << "  " << element << '\n';cout << "\nobservers, native format:" << endl;
#ifdef BOOST_POSIX_APIcout << "  native()-------------: " << p.native() << endl;cout << "  c_str()--------------: " << p.c_str() << endl;
#else // BOOST_WINDOWS_APIwcout << L"  native()-------------: " << p.native() << endl;wcout << L"  c_str()--------------: " << p.c_str() << endl;
#endifcout << "  string()-------------: " << p.string() << endl;wcout << L"  wstring()------------: " << p.wstring() << endl;cout << "\nobservers, generic format:\n";cout << "  generic_string()-----: " << p.generic_string() << endl;wcout << L"  generic_wstring()----: " << p.generic_wstring() << endl;cout << "\ndecomposition:\n";cout << "  root_name()----------: " << p.root_name() << '\n';cout << "  root_directory()-----: " << p.root_directory() << '\n';cout << "  root_path()----------: " << p.root_path() << '\n';cout << "  relative_path()------: " << p.relative_path() << '\n';cout << "  parent_path()--------: " << p.parent_path() << '\n';cout << "  filename()-----------: " << p.filename() << '\n';cout << "  stem()---------------: " << p.stem() << '\n';cout << "  extension()----------: " << p.extension() << '\n';cout << "\nquery:\n";cout << "  empty()--------------: " << say_what(p.empty()) << '\n';cout << "  is_absolute()--------: " << say_what(p.is_absolute()) << '\n';cout << "  has_root_name()------: " << say_what(p.has_root_name()) << '\n';cout << "  has_root_directory()-: " << say_what(p.has_root_directory()) << '\n';cout << "  has_root_path()------: " << say_what(p.has_root_path()) << '\n';cout << "  has_relative_path()--: " << say_what(p.has_relative_path()) << '\n';cout << "  has_parent_path()----: " << say_what(p.has_parent_path()) << '\n';cout << "  has_filename()-------: " << say_what(p.has_filename()) << '\n';cout << "  has_stem()-----------: " << say_what(p.has_stem()) << '\n';cout << "  has_extension()------: " << say_what(p.has_extension()) << '\n';return 0;
}

三、配置及构建

虽然提示说find_package函数中我"BOOST"写错了,应该为"Boost",但我改为"Boost"后会报错。(原因未知)

CMake I 使用Boost库filesystem相关推荐

  1. (九)boost库之文件处理filesystem

    filesystem库是一个可移植的文件系统操作库,它在底层做了大量的工作,使用POSIX标准表示文件系统的路径,使C++具有了类似脚本语言的功能,可以跨平台操作目录.文件,写出通用的脚本程序. 1. ...

  2. cmake中boost库找不到问题

    有时候需要用到boost库,在CMAKE中怎么配置都很清楚,但是其中有一个小坑需要注意. 这个坑有点低级,但是有时候人们就是不知道没电是因为插排没插到插座上. boost库可能我们编译的时候选择了64 ...

  3. CMake调用boost库

    CMake调用boost的编译脚本 cmake_minimum_required(VERSION 3.14) project(boost_python) #设置支持C++11特性 set(CMAKE_ ...

  4. C++:MAC安装Boost库文件并且使用CLion开发

    boost的filestem库 C++在17版本的标准库中引入了一个filesystem库,用来处理文件路径,以及文件访问.很多编译器对filesystem库的支持还不是很好.为了解决这个问题,可以临 ...

  5. CMakeLists.txt使用boost库

    1.实例代码example.cpp #include <boost/regex.hpp> #include <iostream> #include <string> ...

  6. cmake开发环境 linux qt_一步步搭建CMake+QT+VTK+BOOST开发环境

    开发环境: 1.可以迅速处理大量并发网络数据包,ASIO库和winpcap 4.1.3库; 2.处理与显示点云模型数据,使用VTK 8.2.0库; 3.项目使用CMake+VC2017编译,GUI使用 ...

  7. linux C++安装并编译boost库

    编译安装 ​​​​ wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz tar -zxvf b ...

  8. Linux下boost库的编译、安装详解

    1.下载源文件 去官网下载:http://www.boost.org/ 这里下载最新版本 wget https://dl.bintray.com/boostorg/release/1.64.0/sou ...

  9. VS2008下直接安装使用Boost库1.46.1版本号

    Boost库是一个可移植.提供源码的C++库,作为标准库的后备,是C++标准化进程的发动机之中的一个. Boost库由C++标准委员会库工作组成员发起,当中有些内容有望成为下一代C++标准库内容.在C ...

最新文章

  1. php变动参数,[小记]PHP方法的参数可变/不定
  2. 软件工程——求二维数组所有子矩阵的和的最大值
  3. Nginx负载均衡与配置Nginx的ssl
  4. 【Cocos2d实例教程一】xcode5下Cocos2d环境的搭建
  5. 关于HTML头文件中的meta
  6. mysql导出数据表 .xls_mysql数据库导出xls-自定义
  7. 【python数据挖掘课程】十九.鸢尾花数据集可视化、线性回归、决策树花样分析
  8. log analysis Werzeug aus Deutschland Dr
  9. flask—wtforms
  10. 捡来的一个大数模版。很好用
  11. c语言 什么是指针变量,c语言指针详解:什么是指针?
  12. IoTP2PGate 两台物联网设备点对点通信快速实现方案
  13. 荒野大镖客ol 服务器位置,荒野大镖客2ol盗贼在什么位置?盗贼具体位置分享
  14. 小学计算机课知识点内容,小学信息技术教案九篇
  15. JAVA - Quartz 定时任务_启动原理
  16. 【嵌入式】学习心路历程与总结
  17. 帝国cms php替换,帝国cms怎么替换网址域名
  18. android provision apk 分析
  19. 输出从顶点Vi到Vj的所有简单路径
  20. 数据结构大作业——银行排队系统

热门文章

  1. 读书|优秀作家玄机《新品类战略》
  2. 【原创】电脑为什么会慢?C盘空间越来越小?怎么清理?请看本文
  3. Windows 如何打开和编辑.lnk文件
  4. 关于公钥与私钥的一点看法
  5. python讲师金角大王_(学习)金角大王python练习题
  6. TwinCAT3 PLC多轴编程的方法
  7. FSMC-灵活的静态存储控制器
  8. SQLServer使用语句添加备注
  9. 综合实训 长沙气候数据分析
  10. 多个服务器数据互通_2020年4月28日部分服务器数据互通公告