在 Ubuntu 用 cmake 專案寫 Boost 程式

本篇介紹在 Ubuntu 下使用 cmake 來寫 boost C++ 的程式。

以下為我的系統環境:
作業系統:Ubuntu 16.04
編譯器:G++ 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.11)
cmake 3.5.1
使用版本:boost 1.71.0

安裝 boost

還沒安裝 boost 的話請參考 windows 安裝方式 / ubuntu 安裝方式

使用範例

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <boost/filesystem.hpp>

using namespace std;
using namespace boost::filesystem;

int main(int argc, const char *argv[])
{
create_directories("image/out");
return 0;
}

cmake 專案怎麼寫如下所示,
add_executable:來定義執行檔名稱,
include_directories
target_link_libraries

CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cmake_minimum_required(VERSION 3.0)

set(BOOST_ROOT /usr/local/include/boost)
#set(BOOST_INCLUDEDIR /usr/local/include/boost)
#set(BOOST_LIBRARYDIR /usr/local/xxx)

find_package(Boost REQUIRED COMPONENTS system)
if(Boost_FOUND)
MESSAGE(STATUS "Boost_INCLUDE_DIRS = ${Boost_INCLUDE_DIRS}")
MESSAGE(STATUS "Boost_LIBRARIES = ${Boost_LIBRARIES}")
MESSAGE(STATUS "Boost_VERSION = ${Boost_VERSION}")
MESSAGE(STATUS "Boost_LIB_VERSION = ${Boost_LIB_VERSION}")

include_directories(${Boost_INCLUDE_DIRS})
add_executable(a.out boost-filesystem-create-directory.cpp)
target_link_libraries(a.out ${Boost_LIBRARIES})
endif()

編譯

在 linux 使用 cmake 來編譯的指令如下:

1
2
3
$ mkdir build && cd build
$ cmake ..
$ make

查看 boost 版本號

1
2
$ cat /usr/local/include/boost/version.hpp | grep BOOST_VERSION
#define BOOST_VERSION 107100

參考
[1] FindBoost — CMake 3.16.2 Documentation
https://cmake.org/cmake/help/v3.16/module/FindBoost.html
[2] Linux下使用CMake进行编译的时候寻找Boost库 - 简书
https://www.jianshu.com/p/1827cd86d576