cmake 基础语法

  • 最低版本

    cmake_minimum_required(VERSION 3.1)

  • Project

    VERSION 指定版本,并设置一系列变量

    DESCRIPTION 项目描述

    LANGUAGES 支持C/CXX/Fortran/ASM ,C/C++ 为默认值

  • 生成可执行文件

    add_executable(Demo demo1.cpp demo2.cpp),作用是:指定的源文件来生成目标可执行文件。

  • 目录下的所有源文件以列表的形式保存到变量中

    aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC_LIST)
    add_executable(main ${SRC_LIST})

  • 生成库文件

    • 库类型包括 STATIC、SHARED、MODULE、OBJECT 等。如果没有指定库类型,那么 BUILD_SHARED_LIBS 的值将决定编译 STATIC 或者 SHARED。

      set(BUILD_SHARED_LIBS ON)
      add_library(${PROJECT_NAME} ${SRCS_MAIN})

    • ADD_LIBRARY(hello SHARED ${LIBHELLO_SRC}) 默认是静态库

  • target 生成
    add_library 以及 add_executable 来生成的。

  • 指定查找头文件的搜索路径

    include_directories (${HELLO_SOURCE_DIR}/Hello),效果为 增加hello 为 include 目录。默认会在/usr/local/include//usr/include/中寻找。补充:官网不推荐使用INCLUDE_DIRECTORIES

    • target_include_directories():指定目标包含的头文件路径。
  • 链接库的搜索路径
    link_directories(),相当于gcc - L(Library)参数; 也相当于环境变量中LD_LIBRARY_PATH的路径的作用。

    link_directories (${PROJECT_BINARY_DIR}/Hello)

    • target_link_directories(demo /my/libs/dir)

      cmake 不鼓励使用 这样使用,建议使用link_directories 或者target_link_libraries

  • 给目标文件连接库

    target_link_libraries: 添加链接库,相当于 gcc -l

    target_link_libraries(demo Hello) 将’可执行文件’与’Hello连接’成’最终’文件demo

  • 显示定义变量

    set(var, [value])

    例如:

    set(SRC_LIST add.h add.cpp)

    set(SRC_LIST ${SRC_LIST} main.cpp) 追加main.cpp

  • 设置宏定义

    预定义宏

    add_definitions(-D宏名称)

    例如:

    add_definitions(-DWINDOWS)

    add_definitions(-DLINUX)

  • 设置编译选项

set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -march=native -O3 -frtti -fpermissive -fexceptions -pthread")

  • 预定义的变量

    PROJECT_SOURCE_DIR:我们使用cmake命令后紧跟的目录,一般是工程的根目录;

    PROJECT_BINARY_DIR:执行cmake命令的目录,{PROJECT_SOURCE_DIR}/build;

    CMAKE_CURRENT_LIST_FILE:输出调用这个变量的CMakeLists.txt的完整路径;

    CMAKE_CXX_FLAGS:设置C++编译选项,也可以通过指令ADD_DEFINITIONS()添加;

    CMAKE_BUILD_TYPE:build 类型(Debug, Release, …)

    set(ENV{CMAKE_PATH} “F:/cmake”) 将CMAKE_PATH 这个环境变量设为”F:/cmake”

  • 编译开关 option

    cmake 中的 option 起到编译开关的作用。

  • 宏开关

    add_definitions()相当于 C/C++ 里面的 #define 宏定义功能.

    cmake -DTEST=ON .. 开启宏的开关

原文地址:http://www.cnblogs.com/wsl-hitsz/p/16879903.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性