美文网首页
CMake入门(一)

CMake入门(一)

作者: peterzen | 来源:发表于2019-07-29 14:57 被阅读0次

    CMake是什么

    CMake是一个opensource的软件项目构建管理工具;它允许开发者用一种简单的文本格式进行构建参数的指定。

    为什么使用CMake

    如果你之前有过维护软件包的构建和安装的经验,你就会对CMake有兴趣。
    当前很多项目都可以在Linux下用Makefile和在Windows下用Visual Studio进行编译;这要求开发者在对应的系统下保持构建工具的更新,并且不同系统的构建行为保持一致;如果再引入XCode,这需要更多的构建工具,这样会是一个问题。
    如果在此基础上引入可选组件,比如如果系统上有libjpeg,项目就支援JPEG,这会造成更大的麻烦。
    CMake提供了一个简单的,易于理解的文件格式来解决上述问题。

    如果一个项目有多个开发者参与,或者这个项目有多个目标平台;那么不可避免的需要在多台PC上进行构建,不同的PC在开发环境上会有差异。

    • 自动进行项目构建所需的program、library、header file的查找能力;
    • 在source tree以外进行构建的能力;
    • 为Qt moc,SWIG等自动产生复杂的自定义命令的能力;
    • 在configuration阶段进行可选组件定制的能力;
    • 自动从简单文件文件产生workspace和project的能力;
    • 配置生成静态库/动态库的能力;
    • 自动产生文件依赖,支持并行编译;

    CMake的基本语法

    build的过程由每个目录下的名为CMakeFileLists.txt的文件组成的一系列文件列表所控制;
    CMakeFileLists.txt文件由CMake语句进行项目描述,CMake语句的语法为:

    command( args... )
    
    • command是命令的名字,CMake是不区分大小写的;
    • args是一系列由空格分隔的参数,如果参数中有空格,参数需要用双引号引起来;

    变量被引用的格式是${VAR};
    多个参数可以使用set来使之构成一个list

    set( Foo a b c )
    

    这样设置的结果是Foo的值是 a b c;

    CMake可以直接访问系统环境变量和Windows注册表;
    访问系统环境变量的语法:

    $Env{ARG}
    

    访问Windows注册表:

    [HKEY_CURRENT_USER\\Software\\path1\\path2;key]
    

    Hello World

    一个简单的CMakeFileLists.txt的例子

    project( Hello )
    add_executalbe( Hello Hello.c )
    

    一个稍微复杂的例子

    cmake_minimum_required( 2.6 )
    project( HELLO )
    
    set( HELLO_SRCS Hello.c File2.c File3.c )
    if( WIN32 )
        set( HELLO_SRCS ${HELLO_SRCS} WinSupport.c )
    esle()
        set( HELLO_SRCS ${HELLO_SRCS} LinuxSupport.c )
    endif()
    
    add_executable( HELLO ${HELLO_SRCS} )
    
    # look for the Tcl library
    find_library( TCL_LIBRARY 
        NAMES tcl tcl84 tcl83 tcl82 tcl80
        PATHS /usr/lib /usr/local/lib
        )
    if( TCL_LIBRARY )
        target_link_library( Hello ${TCL_LIBRARY} )
    endif()
    

    如何运行CMake

    通常使用两种方式运行CMake

    cmake-gui
    通过桌面或者命令行运行cmake-gui,打开后UI如下:

    [外链图片转存失败(img-ZwXwlARt-1564383408597)(http://7xqdd5.com1.z0.glb.clouddn.com/cmake-gui.png)]
    按照如下步骤进行设置:

    1. 图示1, 选择source code所在位置(如果通过cmake-gui path_to_src的方式,source code位置已经设定好);
    2. 图示2, 选择build要产生文件的存放位置;
    3. 图示3,configure;如果是第一次执行configure,会弹出对话框让进行compiler的选择,指定toolchain file;这样设置以后,configure过程会进行,在图示4的区域显示相关option;
    4. 图示4,进行相关参数或者option的设置;
    5. 图示5,generate,产生指定平台的build file(Linux的Makefile或者Visual Studio的sln file);

    命令行使用cmake

    1. 切换到准备放置binary file的目录
    2. cmake path_to_src -Doption
    3. make
    4. make install

    相关文章

      网友评论

          本文标题:CMake入门(一)

          本文链接:https://www.haomeiwen.com/subject/siybrctx.html