Linux下使用CMake进行编译的时候寻找Boost库

Linux下使用CMake进行编译的时候寻找Boost库,第1张

通过调用 find_package 可以找到头文件和所需要的库文件或者是一个CMake打包配置文件,

运行完后可以得到很多变量,下面列了一些主要的

可以在搜索package之前,通过设置一些变量来帮助boost库的查找

假如目标程序foo需要链接Boost库regex和system,编写如下的CMakeLists文件,

FindBoost

首先把Boost库的头文件存放到/usr/include/boost/路径下,再把Lib文件存放到/usr/local/lib/boost/路径下。修改/etc/profile文件,在此文件中增加如下2个环境变量:

BOOST_INCLUDE=/usr/include/boost

export BOOST_INCLUDE

BOOST_LIB=/usr/local/lib/boost

export BOOST_LIB

写一个如下所示的cpp文件。

//samlpe.cpp

#include <iostream>

#include <string>

#include <boost/thread.hpp>

using namespace std

void threadRoutine(void)

{

boost::xtime time

time.nsec = 0

time.sec = 20

cout <<"线程函数做一些事情" <<endl

boost::thread::sleep(time)

}

int main(void)

{

string str

cout <<"输入任意字符开始创建一个线程..." <<endl

cin >>str

boost::thread t(&threadRoutine)

t.join()

cout <<"输入任意字符结束运行..." <<endl

cin >>str

return 0

}

保存。使用g++编译,命令如下所示:

g++ -o samlpe.out samlpe.cpp -I$BOOST_INCLUDE -L$BOOST_LIB -lboost_thread-gcc-mt

其中-I参数指定Boost头文件路径,-L参数指定Boost库文件路径,-l参数指定使用线程库名。在我使用的这个版本Boost里,到/usr/local/lib/boost路径下,可以看到有关Boost线程库文件,比如:libboost_thread-gcc-mt.a等。注意在用-l参数指定库名时把磁盘文件名前面那个lib前缀去掉就可以了。

打开synaptic, 找到libboost-all-dev, 安装即可。

安装后可以查看boost相关库,在/usr/lib/目录下

如:/usr/lib/libboost_date_time.a /usr/lib/libboost_math_tr1f-mt.a /usr/lib/libboost_serialization-mt.so

/usr/lib/libboost_date_time-mt.a/usr/lib/libboost_math_tr1f-mt.so /usr/lib/libboost_serialization.so

/usr/lib/libboost_date_time-mt.so /usr/lib/libboost_math_tr1f.so/usr/lib/libboost_serialization.so.1.42.0

/usr/lib/libboost_date_time.so /usr/lib/libboost_math_tr1f.so.1.42.0 /usr/lib/libboost_signals.a

/usr/lib/libboost_date_time.so.1.42.0 /usr/lib/libboost_math_tr1l.a /usr/lib/libboost_signals-mt.a

/usr/lib/libboost_filesystem.a /usr/lib/libboost_math_tr1l-mt.a /usr/lib/libboost_signals-mt.so

/usr/lib/libboost_filesystem-mt.a /usr/lib/libboost_math_tr1l-mt.so /usr/lib/libboost_signals.so

/usr/lib/libboost_filesystem-mt.so /usr/lib/libboost_math_tr1l.so/usr/lib/libboost_signals.so.1.42.0

/usr/lib/libboost_filesystem.so /usr/lib/libboost_math_tr1l.so.1.42.0 /usr/lib/libboost_system.a

/usr/lib/libboost_filesystem.so.1.42.0 /usr/lib/libboost_math_tr1-mt.a /usr/lib/libboost_system-mt.a

/usr/lib/libboost_graph.a /usr/lib/libboost_math_tr1-mt.so /usr/lib/libboost_system-mt.so

/usr/lib/libboost_graph-mt.a/usr/lib/libboost_math_tr1.so /usr/lib/libboost_system.so

/usr/lib/libboost_graph-mt.so /usr/lib/libboost_math_tr1.so.1.42.0 /usr/lib/libboost_system.so.1.42.0

/usr/lib/libboost_graph.so /usr/lib/libboost_prg_exec_monitor.a /usr/lib/libboost_test_exec_monitor.a

/usr/lib/libboost_graph.so.1.42.0 /usr/lib/libboost_prg_exec_monitor-mt.a /usr/lib/libboost_test_exec_monitor-mt.a

复制代码头文件在/usr/include/boost下gnuser@ubuntu:~$ ls /usr/include/boost/

accumulators date_time.hpp io_fwd.hpp pointer_cast.hpp spirit

algorithmdetailiostreams pointer_to_other.hpp spirit.hpp

aligned_storage.hpp dynamic_bitsetis_placeholder.hpp pool statechart

any.hpp dynamic_bitset_fwd.hppiterator preprocessor static_assert.hpp

archive dynamic_bitset.hppiterator_adaptors.hpp preprocessor.hpp strong_typedef.hpp

array.hppenable_shared_from_this.hpp iterator.hpp program_optionsswap.hpp

asio exception lambda program_options.hppsystem

复制代码boost库命名:

比如libboost_regex-vc71-mt-d-1_34.lib,

lib: 库前缀,除了windows平台,都是这个前缀

boost_regex: boost的regex库

-mt 多线程支持

-d debug版本


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8431906.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存