cmake常用命令

内建函数
  • cmake_minimum_required(VERSION xxx):指明所需要的最低cmake版本为xxx
  • project([PROJECT_NAME] [CXX][C][Java]):该函数用来定义工程名称,并指定工程支持的语言,支持的语言选项是可以忽略的,默认支持所有语言。
  • set([VALUE_NAME] [VALIUE]):该函数用来显式的定义变量,[VALUE]是一个可变参数列表。
  • message(SEND_ERROR|STATUS|FAUAL_ERROR "echo message" ...):该函数用来向终端输出信息
    • SEND_ERROR:产生错误,生成过程被跳过
    • STATUS:输出前缀为–的状态信息
    • FATAL_ERROR:立即终止cmake过程
  • add_executable([OUTPPUT_NAME] [SOURCE_LIST]):生成可执行文件
    • [OUTPPUT_NAME]:表示生成的可执行文件名
    • [SOURCE_LIST]:表示生成可执行文件依赖的所有文件
  • add_library([LIB_NAME] [SOURCE_LIST]):生成静态库
    • [LIB_NAME]:表示生成的静态库名(不包含静态库lib前缀和.a后缀)
    • [SOURCE_LIST]:表示生成静态库依赖的所有文件
  • add_library([SO_NAME] SHARED [SOURCE_LIST]):生成动态库
    • [SO_NAME]:表示生成的动态库名(不包含动态库lib前缀和.so后缀)
    • SHARED:指明生成的库类型,生成动态库时应为SHARED
    • [SOURCE_LIST]:表示生成动态库依赖的所有文件
  • aux_source_directory([DIR] [VAR]):将所有的[DIR]都赋值给[VAR]
  • add_definitions("xxx xxx"):设置编译选项以及参数
  • include_directories([DIR]):设置第三方库头文件所在路径,使用<>包括的第三方库也会在该路径下寻找
  • link_directories([DIR]):设置第三方静态/动态库的路径,类似编译选项中的-L选项
  • target_link_libraries([PROJECT_NAME] [LIB_NAME]...):设置要链接的第三方库,类似编译选项中的-l选项
  • aux_source_directory([DIR], [VAR]):将[DIR]目录下的所有的cpp文件以绝对路径的方式赋值给[VAR]
cmake变量
  • CMAKE_VERBOSE_MAKEFILE :表示是否输出详细的编译和链接信息,对应on/off
  • EXECUTABLE_OUTPUT_PATH :表示可执行文件的输出目录
  • LIBRARY_OUTPUT_PATH :表示链接库的输出目录
  • CMAKE_CXX_FLAGS:表示编译器的编译参数,后跟""引号内添加编译参数
  • CMAKE_CXX_COMPILER :表示使用的编译器,后跟""引号内指明编译器类型
  • CMAKE_CXX_FLAGS_DEBUG :debug版本特有的编译选项
  • CMAKE_CXX_FLAGS_RELEASE:release版本下特有的编译选项
  • CMAKE_SOURCE_DIR:CMakeLists.txt所在的路径
自定义变量
  • CMAKE_CURRENT_SOURCE_DIR:表示当前CMakeLists.txt文件所路径
  • CMAKE_SOURCE_DIR:表示工程的顶层目录
  • CMAKE_MODULE_PATH:参见find_package
find_package

在使用第三方库的情况下,find_package的用来寻找第三方库的.h和.so/.a/文件所在的路径并将找到的路径设置为变量以供CMakeLists.txt的其他部分使用。

find_package(xxx)会去${CMAKE_MODULE_PATH}的所有路径中去寻找xxx.cmake或config.cmake文件,这两个文件时库文件安装时自己安装的,将自己路径硬编码到其中。前者称为module模式,后者成为config模式。

xxx.cmake会提供以下变量:

  • <name>_FOUND:表示是否查到
  • <name>_INCLUDE_DIR<name>_INCLUDES:表示头文件的位置
  • <name>_LIBRARY<name>_LIBRARIES<name>_LIBS:表示库文件路径和名称
  • <name>_DEFINITIONS
include

在cmake中使用include(<arg1>)时,cmake会搜索系统安装的目录,也会搜索CMAKE_MODULE_PATH指定的目录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值