美文网首页
使用CMake编译C/C++程序

使用CMake编译C/C++程序

作者: Upppping | 来源:发表于2019-10-15 21:43 被阅读0次

    官方手册

    CMake Tutorial
    CMake Reference

    作用

    定义程序编译规则

    基本流程

    1. 编写CMakeLists.txt
    2. 通过cmake生成Makefile
    3. make编译

    编写CMakeLists.txt

    生成可执行文件的最简单版本的CMakeLists.txt

    # 规定该CMakeLists.txt适用的cmake最小版本,这里是 3.10
    cmake_minimum_required(VERSION 3.10)
    
    # 相当于visual studio项目名称,这里是 Tutorial
    project(Tutorial)
    
    # 定义生成的可执行文件(程序)的名称,
    # 相当于visual studio项目属性中的目标文件名,
    # 这里是 Tutorial
    # 用${PROJECT_NAME}替代,即可执行文件名称等于项目名称
    # 和加入编译的源文件路径列表,路径相对于`CMakeLists.txt`所在目录,
    # 相当于visual studio项目解决方案资源管理器中列出来的文件,这里是 tutroial.c
    add_executable(Tutorial tutorial.c)
    

    以上CMakeLists.txt定义的编译规则是将源文件tutorial.c编译成名为 Tutorial 的可执行文件。

    常用语句

    add_definitions() # 相当于visual studio项目属性中C/C++-预处理器-预处理器定义
    include_directories() # 相当于visual studio项目属性中C/C++-常规-附加包含目录
    link_directories() # 相当于visual studio项目属性中链接器-常规-附加库目录
    link_libraries() # 相当于visual studio项目属性中链接器-输入-附加依赖项
    set(A B) # 定义变量A内容为B
    ${A} # ${A}使用变量A,如上面${PROJECT_NAME}
    file(GLOB SRC_FILE *.c) # 定义SRC_FILE为当前目录下后缀为c的文件列表
    aux_source_directory(./ SRC_FILES) # 定义SRC_FILES为当前目录下的所有源文件列表,./ 表示当前目录, ../表示上级目录
    message(STATUS ${A}) #输出消息 内容为变量A的值
    

    通过cmake生成Makefile

    Usage
    
      cmake [options] <path-to-source>
      cmake [options] <path-to-existing-build>
      cmake [options] -S <path-to-source> -B <path-to-build>
    

    一般用法是,新建一个文件夹,一般命名为build,在终端进入该文件夹,然后调用cmake ../cmake会在找到上级目录找到CMakeLists.txt,生成makefile和一些其它文件。

    make编译

    makefile所在目录,调用make命令,会根据makefile对程序进行编译生成。

    相关文章

      网友评论

          本文标题:使用CMake编译C/C++程序

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