CMake I 使用Boost库filesystem
目录
一、 关于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相关推荐
- (九)boost库之文件处理filesystem
filesystem库是一个可移植的文件系统操作库,它在底层做了大量的工作,使用POSIX标准表示文件系统的路径,使C++具有了类似脚本语言的功能,可以跨平台操作目录.文件,写出通用的脚本程序. 1. ...
- cmake中boost库找不到问题
有时候需要用到boost库,在CMAKE中怎么配置都很清楚,但是其中有一个小坑需要注意. 这个坑有点低级,但是有时候人们就是不知道没电是因为插排没插到插座上. boost库可能我们编译的时候选择了64 ...
- CMake调用boost库
CMake调用boost的编译脚本 cmake_minimum_required(VERSION 3.14) project(boost_python) #设置支持C++11特性 set(CMAKE_ ...
- C++:MAC安装Boost库文件并且使用CLion开发
boost的filestem库 C++在17版本的标准库中引入了一个filesystem库,用来处理文件路径,以及文件访问.很多编译器对filesystem库的支持还不是很好.为了解决这个问题,可以临 ...
- CMakeLists.txt使用boost库
1.实例代码example.cpp #include <boost/regex.hpp> #include <iostream> #include <string> ...
- cmake开发环境 linux qt_一步步搭建CMake+QT+VTK+BOOST开发环境
开发环境: 1.可以迅速处理大量并发网络数据包,ASIO库和winpcap 4.1.3库; 2.处理与显示点云模型数据,使用VTK 8.2.0库; 3.项目使用CMake+VC2017编译,GUI使用 ...
- linux C++安装并编译boost库
编译安装 wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz tar -zxvf b ...
- Linux下boost库的编译、安装详解
1.下载源文件 去官网下载:http://www.boost.org/ 这里下载最新版本 wget https://dl.bintray.com/boostorg/release/1.64.0/sou ...
- VS2008下直接安装使用Boost库1.46.1版本号
Boost库是一个可移植.提供源码的C++库,作为标准库的后备,是C++标准化进程的发动机之中的一个. Boost库由C++标准委员会库工作组成员发起,当中有些内容有望成为下一代C++标准库内容.在C ...
最新文章
- php变动参数,[小记]PHP方法的参数可变/不定
- 软件工程——求二维数组所有子矩阵的和的最大值
- Nginx负载均衡与配置Nginx的ssl
- 【Cocos2d实例教程一】xcode5下Cocos2d环境的搭建
- 关于HTML头文件中的meta
- mysql导出数据表 .xls_mysql数据库导出xls-自定义
- 【python数据挖掘课程】十九.鸢尾花数据集可视化、线性回归、决策树花样分析
- log analysis Werzeug aus Deutschland Dr
- flask—wtforms
- 捡来的一个大数模版。很好用
- c语言 什么是指针变量,c语言指针详解:什么是指针?
- IoTP2PGate 两台物联网设备点对点通信快速实现方案
- 荒野大镖客ol 服务器位置,荒野大镖客2ol盗贼在什么位置?盗贼具体位置分享
- 小学计算机课知识点内容,小学信息技术教案九篇
- JAVA - Quartz 定时任务_启动原理
- 【嵌入式】学习心路历程与总结
- 帝国cms php替换,帝国cms怎么替换网址域名
- android provision apk 分析
- 输出从顶点Vi到Vj的所有简单路径
- 数据结构大作业——银行排队系统