Ubuntu22.04中使用CMake配置运行boost库示例程序
Ubuntu22.04中使用CMake配置运行boost库示例程序
boost是一个比较强大的C++准标准库,里面有很多值得学习的东西,比较asio
网络库可以用来编写C++ TCP客户端或者TCP服务端接收程序。本文主要讲解如何在Ubuntu22.04中使用Cmake配置boost库,以及运行boost示例程序。
Ubuntu22.04上安装boost库
参考在Ubuntu上安装Boost的五种方法(全网最全,建议收藏)中使用apt-get
安装libboost-all-dev
包的方式安装boost
库,目前最新稳定版本是1.74.0
sudo apt-get update
sudo apt-get install libboost-all-dev
对应的boost
安装目录为:/usr
,include
头文件所在目录为:/usr/include
,so
库文件安装目录为:/usr/lib/x86_64-linux-gnu
编写boost示例程序
boost
示例程序BoostExample_array_003.cpp
如下:
#include <iostream>
#include <boost/array.hpp>
using namespace std;
int main()
{
boost::array<int, 4> arr = {{1, 2, 3, 4}};
std::cout << "hi " << arr[0] << std::endl;
return 0;
}
编写CMakeLists.txt文件
在上述BoostExample_array_003.cpp
示例源代码同级目录下新建一个CMakeLists.txt
文件
首选我们需要安装cmake
,至于如何在ubuntu22.04
安装cmake
,直接使用sudo apt-get install cmake
即可,当然也可以下载cmake
源代码安装。
project(BoostExamples)
cmake_minimum_required(VERSION 3.7)
# 设置C++标准
set(CMAKE_CXX_STANDARD 14)
# 首选的Boost安装路径
set(BOOST_ROOT /usr)
# 首选的头文件搜索路径 e.g. <prefix>/include
set(BOOST_INCLUDEDIR /usr/include)
# 首选的库文件搜索路径 e.g. <prefix>/lib
set(BOOST_LIBRARYDIR /usr/lib/x86_64-linux-gnu)
# 默认是OFF. 如果开启了,则不会搜索用户指定路径之外的路径
set(BOOST_NO_SYSTEM_PATHS ON)
find_package(Boost COMPONENTS regex system REQUIRED)
if (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
MESSAGE( STATUS "Boost_INCLUDE_DIRS = ${Boost_INCLUDE_DIRS}.")
MESSAGE( STATUS "$Boost_LIBRARIES = ${Boost_LIBRARIES}.")
MESSAGE( STATUS "Boost_LIB_VERSION = ${Boost_LIB_VERSION}.")
add_executable(BoostExample_array_003 BoostExample_array_003.cpp)
target_link_libraries(BoostExample_array_003 ${Boost_LIBRARIES})
endif()
关于在linux下使用cmake配置boost库,可以参考FindBoost和CMake中引用Boost库
运行程序
cd到BoostExample_array_003.cpp
源代码和CMakeLists.txt
同级目录,执行’mkdir build创建一个
build`目录用于cmake编译源代码,这样的话就不会污染源代码目录了,
cd ~/workspace/CppProjects/BoostExamples
mkdir build
cmake ..
make
这样就生成了BoostExample_array_003
可执行程序,
在命令行终端terminal
中执行./BoostExample_array_003
,运行结果如下:
参考资料
原文地址:https://blog.csdn.net/ccf19881030/article/details/143655201
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!