首页 > 系统相关 >windows--cmake与c++的使用教程(16)

windows--cmake与c++的使用教程(16)

时间:2022-12-21 14:44:55浏览次数:78  
标签:function cmake 16 windows macro demo arg return message

1 概述

本节目标: macro编写与函数编写

2 macro 与 function

  • 可类比C语言中的宏定义与函数
  • CMake function传递参数时,不用传递参数类型
  • cmake macro宏只是对字符串的简单替换。和define类似。

3 macro 语法

  • macro需 与 endmacro配对使用
macro(<name> [<arg1> ...])
  <commands>
endmacro()

5 function 语法

  • function需与endfunction配对使用,
  • function可结合return()使用, 也就是说, 函数体可以写 return()
function(<name> [<arg1> ...])
  <commands>
endfunction()

6 一个例子帮助理解macro和function的区别

6.1 cmake脚背

set(var_demo "ABC")

# 宏定义
macro(macro_demo arg)
  message("arg = ${arg}")
  set(arg "123")
  message("# after change the value of arg.")
  message("arg = ${arg}")
endmacro()

message("")
message("=== call macro ===")
macro_demo(${var_demo})
message("")
message("")

# 函数定义
function(func_demo arg)
  message("arg = ${arg}")
  set(arg "123")
  message("# after change the value of arg.")
  message("arg = ${arg}")
endfunction()

message("")
message("=== call function ===")
func_demo(${var_demo})
message("")
message("")
message("")

6.2 输出结果

=== call macro ===
arg = ABC
# after change the value of arg.
arg = ABC



=== call function ===
arg = ABC
# after change the value of arg.
arg = 123

7 function 中使用return

  • 类似C语言函数return语句。

7.1 一个例子

function(func_demo_return )
    message("11111")
    return()
    message("22222")
endfunction(func_demo_return )

func_demo_return()

7.2 输出结果

11111

因为执行了return(), 所以不会输出 22222

标签:function,cmake,16,windows,macro,demo,arg,return,message
From: https://www.cnblogs.com/pandamohist/p/16996232.html

相关文章

  • CMake实践(二)
    fPICadd_compile_options(-fPIC)​​大概意思是缺少-fPIC这个编译参数​​​​https://cxyzjd.com/article/winafa/114847300​​-fuse-ld=goldset(CMAKE_SHARED_LINKER_F......
  • Ubuntu16.04Ubuntu18.04 Ubuntu20.04 安装 ROS
    0首先源要换成中科大(国内)的源。在电脑左上角的Searchyourcomputer中输入Soft,选择Software&update,画面如下找到ustc的替换。sudosh-c'./etc/lsb-release&&......
  • Windows Server 2012 R2 Standard安装mellanox网卡驱动
    原因:我的系统是WindowsServer2012R2Standard首先我是想要安装mellanox网卡驱动,然后系统让我安装WindowsServer2012R2安装补丁KB2999226思路:经过网上查找资料安装......
  • 16【责任链设计模式模式】
    文章目录​​十六、责任链设计模式模式​​​​16.1责任链设计模式简介​​​​16.1.1责任链设计模式概述​​​​16.1.2责任链设计模式的UML类图​​​​16.2责任链设......
  • 16【TCP、UDP、网络通信】
    上一篇:​​15【IO流增强】​​下一篇:​​17【测试单元、反射、注解、Lombok插件】​​目录:​​【JavaSE零基础系列教程目录】​​文章目录​​16【TCP、UDP、网络通信】​......
  • 禁止windows系统自动更新
    第一步win+r,输入services.msc找到WindowsUpdate单击 常规->启动类型选择禁用。恢复->第一次失败选择无操作最后应用保存  第二步win+r,......
  • itop3568开发板Windows安装RKTool驱动
    在烧写镜像之前首先需要安装RKTool驱动。RKTool驱动在网盘资料“iTOP-3568开发板\01_【iTOP-RK3568开发板】基础资料\02_iTOP-RK3568开发板烧写工具及驱动”路径下。......
  • windows--cmake与c++的使用教程(15)
    windows--cmake与c++的使用教程(15)1概述本文基于前文环境本节目标:target_link_libraries为项目链接动态库2target_link_libraries作用常用于链接给定目标或者......
  • CF1694E
    【题意】给出一张\(n\)个点\(m\)条边的有向图,有一个人要从\(1\)走到\(n\)。每天,你可以给他其中一种提示:封锁某一条边,即告诉他这条边之后都不能走。告诉他移动,他......
  • Windows环境下安装和配置WNMP的Memcached
    PHP开发不是我最擅长的服务端语言,但是因为接触WordPress很早,了解到一个叫做 ​​WPJam​​​ - https://blog.wpjam.com/article/wordpress-memcached/ 的插件,后来他更......