zoukankan      html  css  js  c++  java
  • CMake

    CMake - boost

    最后更新日期:2014-04-25by kagula

    阅读前提:《CMake入门(二)》、Linux的基本操作

    环境: Windows 8.1 64bit英文版。Visual Studio 203 Update1英文版。CMake 2.8.12.2、 Cent OS 6.5、Cent OS 6.5自带gcc 4.4.7、icu 4.2.1

    内容简单介绍

             介绍假设在VisualStudio上的项目依赖于boost库,怎样使用cmake工具把这个项目移到Cent OS上。

    正文

    CentOS下boost的安装

    [S1]下载,解压缩到当前文件夹

    #tar -zxvf boost_1_55_0.tar.gz

    [S2]安装Boost.Regex的依赖icu

    #yum install icu libicu-devel

    [S3]进入boost解压缩文件夹。编译安装

    #./bootstrap.sh

    #./b2 install --prefix=/usr/local

    这样boost的头文件会被拷贝到/usr/local/include路径,boost的静态库文件会被拷贝到/usr/local/lib路径。

    Win下怎样安装boost參考资料[1]

    在VisualStudio 2013上建立測试项目

             新建[Visual C++]->[Win32]->[Win32Project]项目,Application type设置为console application, Additional options设置为Empty project。本次測试工程仅仅须要两个文件Source.cpp和CMakeLists.txt

        如今加入Source.cpp,源代码清单:

    include <iostream>
    #include <boost/thread.hpp>
    
    using namespace std;
    
    void mythread()
    {
    	cout << "Hello,thread!" << endl;
    }
    
    int main()
    {
    	boost::function<void()> f(mythread);
    	boost::thread t(f);
    	t.join();
    
    	cout << "thread is over" << endl;
    
    	getchar();
    
    	return 0;
    }

    加入CMakeLists.txt,源代码清单例如以下

    #设置项目名称
    PROJECT(CMake_Tutorial3)
    
    #要求CMake的最低版本号为2.8
    CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
    
    #加入头文件搜索路径
    INCLUDE_DIRECTORIES(/usr/local/include)
    
    #加入库文件搜索路径
    LINK_DIRECTORIES(/usr/local/lib)
    
    #用于将当前文件夹下的全部源文件的名字保存在变量 DIR_SRCS 中
    AUX_SOURCE_DIRECTORY(. DIR_SRCS)
    
    #用于指定从一组源文件 source1 source2 … sourceN(在变量DIR_SRCS中定义) 
    #编译出一个可运行文件且命名为CMake_Tutorial1
    ADD_EXECUTABLE(CMake_Tutorial3 ${DIR_SRCS})
    
    #加入编译可运行程序所须要的链接库、假设有多个中间用空格隔开
    #第一个參数是可运行程序名称,第二个開始是依赖库
    #在这里依据名字boost_thread去寻找libboost_thread.a文件
    TARGET_LINK_LIBRARIES(CMake_Tutorial3 boost_thread)

    在Cent OS上測试项目

    如果我们在Win上的项目文件夹CMake_Tutorial3被拷贝到了/home/kagula/Downloads路径下。

    进入路径,

    $cd CMake_Tutorial3

    $mkdir build

    $cd build

    读取父文件夹的CMakeLists.txt文件。生成Makefile文件

    $cmake ..

    读取Makefile。并编译项目,在当前文件夹下生成CMake_Tutorial3可运行文件

    $make

    执行编译出来的程序

    $./CMake_Tutorial3

             静态链接的优点是部署简单,不用操心目标环境,依赖库不存在或版本号不匹配,所以眼下为止我们的可运行程序都是静态链接依赖库,缺点是造成存储空间浪费,所以不适合有些大项目。下篇会提到怎样在Cent OS上用CMake工具编译动态链接库。

             为什么VisualStudio2013上建的项目缺省是Win32项目而不是Win64? [1]非常少有项目须要用到大于2G的内存,[2]差点儿或没有性能提升,[3]64位系统能够执行32位程序,可是反过来不行。

    參考资料

    [1]《win7 vs2012 编译boost 1.55》

    http://blog.csdn.net/alex_my/article/details/17630685

    [2]《Bash script toinstall gcc 4.8.2 and boost 1.55.0 on CentOS 6.4, CentOS 5.5 and Mac OS X 10.9》

    http://joelinoff.com/blog/?p=1003



  • 相关阅读:
    JAVA序列化
    python教程
    原来root用户只有本地的权限,需要手动将远程的权限打开,尝试了好几种方法,最后还是下面这种方法管用
    MYsql开启远程连接
    雅虎36条优化准则
    需要学习的技术
    可用的谷歌地址
    propertype和_proto_分析
    mvn 插件
    通过 api 调用检查具体日期是否为法定节假日
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6845139.html
Copyright © 2011-2022 走看看