免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1169 | 回复: 0
打印 上一主题 下一主题

cmake [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-11 16:09 |只看该作者 |倒序浏览

               
       
       
       
       
       
  • cmake安装
            (1)从源码安装
            下载cmake源码cmake-2.6.2.tar.gz
           
    http://www.cmake.org/cmake/resources/software.html
            编译安装
            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
           
  • 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  .
  • CMake
            cache
            cmake第一次运行的时候,它将产生一个文件叫CMakeCache.txt,该文件可以被看作一个配置文件,它里面的内容就像传递给configure命令的参数集,CMake
            GUI可以帮你很容易修改它,当然也可以直接对该文件做修改;如果你的CMakeLists.txt文件做过较大幅度的修改,你需要从cache中删除相关的选项,如果你还没有手动编辑过cache文件,在你重新运行cmake之前需删除它。
           
  • 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的值不为empty,0,N,NO,OFF,FALSE,NOTFOUND
    -NOTFOUND,some_command(...)将被执行
    。循环
    set(VAR
            a b c)
    foreach(f
            ${VAR})
    message(${f})
                   endforeach(f)
    用变量f依次代替a,b,c执行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或多个先前的字符序列
    ?:匹配0或1个先前的字符序列
    ():保存一个匹配的表达式,以便以后使用
    参考:http://www.cmake.org/cmake/help/documentation.html
                   
                   
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/78437/showart_1714158.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP