Chinaunix首页 | 论坛 | 博客
  • 博客访问: 335400
  • 博文数量: 72
  • 博客积分: 2130
  • 博客等级: 大尉
  • 技术积分: 857
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-05 16:10
文章分类

全部博文(72)

文章存档

2010年(5)

2009年(14)

2008年(53)

分类: LINUX

2008-12-11 16:09:49

  1. cmake安装

    1)从源码安装

    下载cmake源码cmake-2.6.2.tar.gz

    编译安装

    tar xvf cmake-2.6.2.tar.gz

    cd cmake-2.6.2/

    如果本机上不存在cmake,则:

    ./bootstrap

    make

    make install

    如果本机上存在cmake,想安装一个新版本,则:

    cmake .

    make

    make install

    2)从二进制安装

    sudo apt-get install cmake

  2. cmake运行

    1)运行cmake with GUI

    如果系统中有curses库的话,cmake将生成一个可执行文件ccmake,它是一个基于文本程序的终端,有点类似windows GUI

    在源码目录中运行ccmake .,生成的二进制文件存放在源码目录下

    当然也可以在其他目录下运行ccmake,只是要指定你想编译的源码的路径

    ccmake的使用

    当我们在源码目录下运行ccmake . 时,终端将显示如下:


    当我们键入c时,ccmake将编译

    当我们键入方向键时,可以选择cache entry

    当我们键入enter时,可以编辑cache entry

    当我们键入g时,将生成Makefile,然后退出

    当我们键入h时,将弹出帮助文档

    当我们键入q时,将退出ccmake

    当我们键入t时,可以打开或关闭advanced cache entry

    2)运行cmake from the command line

    如果源码没有太多的选项(在CMakeCache.txt文件中),可以只用cmake .来产生Makefile

    如果源码选项太多,比如VTK,可以把参数-i传递给cmake,如:cmake -i .

    cmake将让你为每一个cache file文件中的选项指定一个值,也能让你增加新的选项到文件CMakeCache.txt中,或者使用ccmake,或者使用CMakeSetup

    当然,也可以传递设置选项的参数给cmake,如:

    cmake -DVARIABLE:TYPE=VALUE .

  1. CMake cache

    cmake第一次运行的时候,它将产生一个文件叫CMakeCache.txt,该文件可以被看作一个配置文件,它里面的内容就像传递给configure命令的参数集,CMake GUI可以帮你很容易修改它,当然也可以直接对该文件做修改;如果你的CMakeLists.txt文件做过较大幅度的修改,你需要从cache中删除相关的选项,如果你还没有手动编辑过cache文件,在你重新运行cmake之前需删除它。

  2. Cmake语法

    1)基本概念

    cmake使用CMakeLists.txt文件,该文件用include或者add_subdirectory命令来增加额外的输入文件。

    注释行以#开头到该行结尾

    命令是由命令名,加括号,括号中的参数用空白隔开,它可以是内建的命令如add_library,或者用户定义的宏或函数

    所有的空格,包含空白符,空行,tabs,当然除了用来隔开参数的空白,都被忽略

    2)变量

    。字符串

    一个字符串是用双引号括起来的,也可以被分隔在多行,如:

    set(MY_STRING “this is a string with a

      newline in

      it”)

    在一个字符串中也可以用变量,如:

    set(VAR “

      hello

      world

      )

    当执行message(“\${VAR}=${VAR}”)后,将打印:

    ${VAR}=

    hello

    world

    也可以message(“\n\thello world”)后,将打印:

    hello world

    。字符串列表

    cmake基本的数据类型为字符串,也可以支持字符串列表,如:

    set(VAR a;b;c)set(VAR a b c)将把VAR设置为字符串列表

    要使用VAR,可以用${VAR},如:

    command(${VAR}),它相当于command(a b c)

    如果想把一个字符串列表作为单个参数传递给命令,可以用双引号,如:

    command(“${VAR}”),相当于command(“a b c”)

    3)流程控制

    。判断

    if(var)

      some_command(...)

        endif(var)

    var的值不为empty0NNOOFFFALSENOTFOUND

    NOTFOUNDsome_command(...)将被执行

    。循环

    set(VAR a b c)

    foreach(f ${VAR})

      message(${f})

        endforeach(f)

    用变量f依次代替abc执行message()

    。宏和函数定义

    定义一个宏hello

    macro(hello MESSAGE)

      message(${MESSAGE})

        endmacro(hello)

    调用宏hello

    hello(“hello world”)

    定义一个函数hello

    function(hello MESSAGE)

      message(${MESSAGE})

        endfunction(hello)

    4)正则表达式

    很多CMake命令如if,会使用正则表达式作为参数,下面是正则表达式会用到的特殊字符:

    ^:匹配一行或一个字符串的开头

    $:匹配一行或一个字符串的结尾

    .:匹配单个字符

    []:匹配方括号中任意字符或字符串

    [^]:匹配不是方括号中的字符或字符串

    [-]:匹配在dash任意一边的字符

    *:匹配0或多个先前的字符序列

    +:匹配1或多个先前的字符序列

    ?:匹配01个先前的字符序列

    ():保存一个匹配的表达式,以便以后使用

    参考:http://www.cmake.org/cmake/help/documentation.html

阅读(3200) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~