CMakeLists.txt语法规则:条件判断中表达式说明二

本文详细介绍了CMakeLists.txt中条件判断的四个表达式:逻辑或(OR)、命令检查(COMMAND)、目标检查(TARGET)和文件/目录存在(EXISTS)。通过实例演示了如何在CMake构建过程中使用这些条件判断确保编译流程的正确性。
摘要由CSDN通过智能技术生成

一.  简介

前面学习了 CMakeLists.txt语法中的 部分常用命令,常量变量,双引号的使用。

前面一篇文章也简单了解了 CMakeLists.txt语法中的条件判断,文章如下:

CMakeLists.txt语法规则:条件判断说明一-CSDN博客

CMakeLists.txt语法规则:条件判断中表达式说明一-CSDN博客

本文继续学习 CMakeLists.txt语法中的条件判断,主要学习 条件判断中的 表达式。

二.  CMakeLists.txt语法规则:条件判断中的表达式

1.  <expr1> OR <expr2>表达式

类似于 C 语言中的逻辑或(||),当 expr1 expr2 至少有一个为真时,条件判断为真;否则为假。

#输出为:false
if(false OR no)
message(true)
else()
message(false)
endif()

#输出为:true
if(yes OR no)
message(true)
else()
message(false)
endif()

#输出为:true
if(ON OR yes)
message(true)
else()
message(false)
endif()

2.  COMMAND command-name 表达式

如果 command-name 是一个已经定义的命令、宏或函数时,条件判断为真;否则为假。
除了宏之外,在 cmake 中还可以定义函数,这个我们也会在后面向大家介绍。
#输出为:false
if(COMMAND yyds)
message(true)
else()
message(false)
endif()

#输出为:true
if(COMMAND project)
message(true)
else()
message(false)
endif()

3. TARGET target-name 表达式

如果 target-name add_executable() add_library() add_custom_target() 定义的目标(这些目标在整个工程中必须是唯一的,不可出现两个名字相同的目标),则条件判断为真;否则为假:
#输出为:false
if(TARGET hello)
message(true)
else()
message(false)
endif()

#输出为:true
add_library(hello hello.c)
if(TARGET hello)
message(true)
else()
message(false)
endif()

4.  EXISTS path 表达式

如果 path 指定的文件或目录存在,则条件判断为真;否则为假。 需要注意的是, path 必须是文件或目录的全路径,也就是绝对路径。
譬如工程目录结构如下所示:

在顶层 CMakeLists.txt 文件中使用 if(EXISTS path)进行判断:

输出为:true
if(EXISTS ${PROJECT_BINARY_DIR})
message(true)
else()
message(false)
endif()

#输出为:true
if(EXISTS ${PROJECT_SOURCE_DIR}/hello)
message(true)
else()
message(false)
endif()

#输出为:false
if(EXISTS ${PROJECT_SOURCE_DIR}/world)
message(true)
else()
message(false)
endif()

#输出为:true
if(EXISTS ${PROJECT_SOURCE_DIR}/hello/hello.c)
message(true)
else()
message(false)
endif()

下一篇文章继续学习 条件判断中的表达式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值