google 总结的开发规范

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 .. 开启宏的开关

posted @ 2022-11-11 11:00  wsl-hitsz  阅读(83)  评论(0编辑  收藏  举报