cmake

CMake全称Cross-Platform Makefile Generator


1. 选项

① -D

格式:-D var=value

作用:给变量var赋值value,以在CMakeLists.txt中引用



2. 命令

 cmake_minimum_required

功能:设置cmake的最低版本限制,若实际cmake版本低于此版本,执行结束且打印错误

示例:cmake_minimum_required(VERSION 2.6)


 project

功能:设置整个项目的名称

示例:project(jovacct)


 option

格式:option(var "descriptive string" value)

功能:

检查变量是否在命令行中定义过,如果定义过则将var重新设置为定义值,如果没有定义过则将var设为value

命令行定义变量即 cmake -D var=value

文件CMakeLists.txt中是否定义过变量,对option没有影响

示例:







message

格式:message([STATUS|WARNING|AUTHOR_WARNING|FATAL_ERROR|SEND_ERROR] "message to display" args)

功能:打印输出,根据级别的不同决定是否终止执行

示例:message("Build type: " ${CMAKE_BUILD_TYPE}) 


if

格式:if(expression) ... else(expresion) ... endif(expression)

说明:

    ◇ 若expression为常量

             当值为1, ON, YES, TRUE, Y, 非0数字时,结果为true; 

             当值为0, OFF, NO, FALSE, N, IGNORE, NOTFOUND, 空字符串, 或以后缀'-NOTFOUND'结尾时,结果为false

       如果参数不是上述常量值之一,则视为变量

    ◇ 若expression为变量,则只要变量值不是false常量中的一个,结果都为true,否则结果为false

示例:

if(var) 判断变量是否为true

if(NOT expression) 取反,表达式不为true则结果为true,否则结果为false

if(EXISTS file) 文件存在则为true,不存在则为false

if(DEFINED var) 变量过定义则为true,没有定义为false,无论变量值是true是false都不要紧

if(var STREQUAL "Debug")  if(var1 STREQUAL var2) 判断字符串值是否相等 


⑥ set

格式:set(var value1 value2 ...)

功能:给变量var赋值

说明:

 变量var的原值被覆盖;

 值参数可以为空,即set(var)合法,当值参数为空时,效果等同于unset(var),即删除指定的变量,使其变成未定义的;


⑦ aux_source_directory

格式:aux_source_directory(dir var)

功能:收集指定目录中所有源文件(.c或.cpp)及同名头文件(.h)的名称,并将其以追加的方式存储到变量var的末尾

说明:

 变量var的原值保持不变,新值以追加的方式被添加到末尾;

 只有同名的头文件(.h)会被添加到变量中;不同名的头文件,即便被某个源文件引用了,也不会被添加;

示例:

假设var=dce.h,目录dir中存在以下三个文件:db.h,dbhelper.h,db.cpp,且db.cpp同时包含了头文件db.h和dbhelper.h

则执行aux_source_directory(dir var)后,var=dce.h db.h db.cpp


使用:

若源文件中包含子目录,则将子目录中的源文件添加到项目的方法为:

set(var macro.h header.h ...)

aux_source_directory(subdirectory var)    

aux_source_directory(. var)


⑧ include_directories

格式:include_directories(dir1 dir2 ...)

功能:设置头文件搜索路径

说明:使用时,通常先将各头文件目录存储到用户变量中,例如DEFAULT_INCLUDE_PATH,然后执行include_directories(${DEFAULT_INCLUDE_PATH})



3. 变量

① CMAKE_SOURCE_DIR

说明:源码树顶层目录路径

使用:可以通过${CMAKE_SOURCE_DIR}获取源码树顶层目录路径


② CMAKE_CURRENT_SOURCE_DIR

说明:当前CMakeLists.txt文件所在的目录路径

使用:可以通过${CMAKE_CURRENT_SOURCE_DIR}获取当前目录路径

示例:



 在attempt/CMakeLists.txt中:

${CMAKE_SOURCE_DIR}=/path/attempt;

${CMAKE_CURRENT_SOURCE_DIR}=/path/attempt;


 在attempt/subdirectory/CMakeLists.txt中:

${CMAKE_SOURCE_DIR}=/path/attempt;

${CMAKE_CURRENT_SOURCE_DIR}=/path/attempt/subdirectory;


③ CMAKE_BINARY_DIR

说明:构建树顶层目录路径

使用:可以通过${CMAKE_BINARY_DIR}获取构建树顶层目录路径


④ LIBRARY_OUTPUT_DIRECTORY

说明:库文件的输出目录

使用:可以通过set命令对该变量进行设置,以指定库文件的生成目录


⑤ EXECUTABLE_OUTPUT_PATH 

说明:可执行文件的输出目录

使用:可以通过set命令对该变量进行设置,以指定可执行文件的生成目录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值