【Learning CMake Cookbook】CMake基本命令梳理总结

Learning CMake Cookbook Basic

updating log:

Started Date: 2022-02-17
Current State: Updating

Update Mark:
2022-02-17
2022-02-18

  • 2022-02-17:基本命令(未分类)

常用基本命令

版本号确定,低于版本号按照错误处理

cmake_minimum_required(VERSION 3.5 FATAL_ERROR)

工程名,并指定工程使用语言(也可以不进行语言指定)

project(ctr_temp_prj LANGUAGES CXX)

生成可执行文件,前者为可执行文件名,后者为生成可执行文件需要的源文件/源文件列表

add_executable(hello-world hello-world.cpp)

生成一个库文件,库文件类型取决于第二个参数

add_library(lib_static//库文件命名
  STATIC//STATIC对应静态链接库(.a);SHARED对应动态链接库(.so)
    Lib.hpp
    Lib.cpp//库文件所依赖的头文件和源文件都要被包含在这个列表中
  )

将目标库文件链接到可执行文件。对于静态链接库,该语句直接将二进制代码“打入”可执行文件;对于动态链接库,为其与可执行文件创建联系。

target_link_libraries(hello-world lib_shared)

使用set()命令对特定变量进行设置,可用于分支语句、条件编译

set(USE_LIBRARY OFF)//可以对用户自定义的变量进行定义以及赋值
set(BUILD_SHARED_LIBS ON)//也可以对CMake内部已存在的全局变量进行设置

定义一个列表,之后可以使用列表名代替列表中所有元素的指代

list(APPEND _sources Message.hpp Message.cpp)
... ...
add_library(lib_static STATIC ${_sources})
//使用以上定义的_sources列表,代指Message.hpp Message.cpp两个文件生成一个静态链接库
add_executable(hello-world hello-world.cpp ${_sources})
//使用以上定义的_sources列表,代指Message.hpp Message.cpp两个文件生成可执行文件

引入一个包,来使用包中包含的一些命令集(类似于python中的import)

include(CMakeDependentOption)
... ...
cmake_dependent_option(
  MAKE_STATIC_LIBRARY "Compile sources into a static library" OFF
  "USE_LIBRARY" ON
  )//使用CMakeDependentOption中引入的命令cmake_dependent_option()来创建一个有依赖关系的option

选项命令,将一些设置接口暴露给用户,使得用户在configure阶段可以通过CMake指令-D来对这些option中对应的变量进行设置;或着通过CMake-GUI直接点击进行配置

option(USE_LIBRARY "Compile sources into a library" OFF)

很常用的打印输出信息的指令

message(STATUS "Compile sources into a SHARED library? ${MAKE_SHARED_LIBRARY}")
//根据前文定义的MAKE_SHARED_LIBRARY,打印输出是否编译生成动态链接库的信息

条件语句

if(USE_SHARED_LIBRARY)//如果USE_SHARED_LIBRARY为真则执行语句块内的xxx
//直到elseif(XXX)、else()、endif()其中的一个
......
elseif(USE_STATIC_LIBRARY)//如果USE_SHARED_LIBRARY不为真且USE_SHARED_LIBRARY为真则执行
//直到elseif(XXX)、else()、endif()其中的一个
......
else()//如果USE_SHARED_LIBRARY和USE_SHARED_LIBRARY均不为真则执行直到endif()
......
endif()//语句块彻底结束

/*
逻辑为“真”的代表:1, ON, YES, true, Y 或非零数字

逻辑为“假”的代表:0, OFF, NO, false, N, IGNORE, NOTFOUND, 空字符串 或 以-NOTFOUND 作为后缀
*/

添加头文件搜索路径

include_directories(.)

非常用命令

为对象设置属性,这里设置输出的文件名属性,使生成其具有指定的文件名的文件

set_target_properties(lib_shared//对象名
  PROPERTIES//表示将要对其属性设置
    OUTPUT_NAME "message"//对输出名进行设置
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值