zoukankan      html  css  js  c++  java
  • CMake入门——简单CMakeLists的编写

    https://www.cnblogs.com/Satan666/p/12654925.html

    CMake简介:

    CMake是一种跨平台的开源项目管理工具,所做的事其实就是告诉编译器如何去编译链接源代码。与之相似的是直接编写makefile文件,但makefile最大的缺点就是不能跨平台,一旦更换环境就要重新编写,于是我们可以使用CMake编写CMakeLists文件来解决此问题。

    检查是否安装CMake

    首先检查是否安装CMake,在终端输入cmake --version来检查,若显示未安装,可以使用sudo apt-get install camke ( ubuntu),或者brew install cmake (macos),windows直接去官网下载,来安装CMake。

    常用指令

    复制代码
    #cmake最小版本需求
    cmake_minimum_required(VERSION xxx)
    
    #设置此项目的名称
    project(xxx) 
    
    #生成可执行文件target ,后面填写的是生成此可执行文件所依赖的源文件列表。
    add_executable(target target_source_codes) 
    
    # 设置一个名字var_name 的变量,同时给此变量赋值为var_value
    SET(var_name var_value)
    
    # 指定编译器
    # CMAKE_C_FLAGS_DEBUG          ----  C 编译器
    # CMAKE_CXX_FLAGS_DEBUG        ----  C++ 编译器
    # -std=c++11  使用 C++11
    # -g:只是编译器,在编译的时候,产生调试信息。
    # -Wall:生成所有警告信息。一下是具体的选项,可以单独使用
    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11   -g  -wall  ")
    
    #指定编译类型,debug 或者为 release
    # debug 会生成相关调试信息,可以使用 GDB 进行
    # release 不会生成调试信息。当无法进行调试时查看此处是否设置为 debug.
    set(CMAKE_BUILD_TYPE Debug)
    
    # 打印消息
    MESSAGE("MSG") 
    
    #给变量var_name赋值为var_value,comment是此变量的注释,和SET 有类似的功效,用于给某变量设置默认值
    option(var_name "comment" var_value) 
    
    # 添加include路径,也就是头文件路径
    include_directories(xxx) 
    
    # 调用xxx子目录的CMakeLists.txt执行
    add_subdirectory(xxx) 
    
    # 给编译器添加xxx参数
    add_compile_options(xxx)
    
    # 给编译器添加库目录,
    link_directories(xxx)
    
    # 生成库文件,SHARED代表动态库,STATIC代表静态库, 最后一个参数代表此库的源文件列表
    add_library(lib_name SHARED or STATIC lib_source_code) 
    
    # 给目标添加依赖库
    target_link_libraries(target_name lib_name ...) 
    复制代码

    简单应用

    下图是一般的项目文件格式,include 存放头文件,src存放源代码文件,build存放临时编译文件。

     假设工程文件夹名为Test,我们可以将CMakeLists.txt文件放在Test文件夹下,也就是src,include的同级目录下,以下是简单的CMakeLists文件编写格式。

    复制代码
    # 最低指定的CMake版本
    cmake_minimum_required(VERSION 3.0)
    
    # 括号里面填你的工程名
    PROJECT(Test)
    
    # 头文件路径
    INCLUDE_DIRECTORIES(include)
    INCLUDE_DIRECTORIES(/usr/local/include/)
    
    # 查找src下的所有cpp文件,然后将结果存进指定变量名(这里是DIR_SRCS)
    AUX_SOURCE_DIRECTORY(src DIR_SRCS)
    
    # 指定语言要求,以下命令为c++ 11
    SET(CMAKE_CXX_STANDARD 11)
    
    # 生成可执行文件,生成的test即为可执行文件
    add_executable(test ${DIR_SRCS})
    复制代码

    由于该过程中会产生很多中间文件,因此我们在build文件夹下使用cmake命令,这样这些文件就都放在build文件夹下,然后make运行就好:

    cd build
    cmake ..
    make
    ./test
     
    0
  • 相关阅读:
    max()和数组里面的max
    NYOJ 超级台阶
    NYOJ Fibonacci数
    floor()向下取整函数
    pow()函数
    HDU 小数化分数 1717
    大端和小端存储
    字节对齐
    CvvImage内存泄漏解决
    01矩阵中,把0的点的行和列都置零
  • 原文地址:https://www.cnblogs.com/shuimuqingyang/p/13952079.html
Copyright © 2011-2022 走看看