UDF在CMake上的编译和调试---CMake简明教程

流程:预处理-->编译-->汇编-->链接-->可执行程序

CMake命令执行流程

1、编写CMakeLists.txt文件的基本配置

cmake_minimum_required(VERSION X.XX) #最小版本
project(UDF) #项目名
add_executable(UDF udf.cpp) #由源文件生成一个可执行程序

2、cmake -B build

        创建一个build 并在此目录下生成makefile或其他文件

3、cmake --build build

        生成项目

CMake语法(类似于命令式编程语言、仅涉及一部分)

变量操作set、list

        CMake中的变量分为两种:CMake提供和自定义

        CMake变量的命名区分大小写

        CMake变量存储时都是字符串

        CMake获取变量:${}

set方法

set(<variable><variable>...[PARENT_SCOPE])

#例子--单个变量
set(Var1 YZZY)    
message(${Var1})

#例子--多个变量
set(LISTVALUE a1 a2)
message(${LISTVALUE})

list方法

list(APPEND <list> [<element>...]) #列表添加元素
list(REMOVE_ITEM <list> <value> [value...]) #列表删除元素
list(LENGTH <list> <output variable>) #获取列表元素个数
list(FIND <list> <value> <out-var>) #在列表中查找元素返回索引
list(INSERT <list> <index> [<element>...]) #在index位置插入
list(sort <list> [...]) #排序list

流程控制

if条件流程控制

if(<condition>)
    <commands>
elseif(<condition>)
    <commands>
else
    <comands>
endif()

#例子
set(var TRUE)

if(var)
    message(TRUE)
else()
    message(FALSE)
endif()

if(NOT var)
    message(TRUE)
else()
    message(FALSE)
endif()

if(NOT var and var)
    message(TRUE)
else()
    message(FALSE)
endif()

if(NOT var or var)
    message(TRUE)
else()
    message(FALSE)
endif()

loop循环流程控制

#For循环
foreach(<loop_var> RANGE <max>)
    <commanes>
endforeach

foreach(<loop_var> RANGE <min> <max> [<step>])
foreach(<loop_var> IN [LISTS <lists>] [ITEMS <items>])




#While
while(<condition>)
    <commands>
endwhile()

函数不涉及,有兴趣可自行了解

作用域

CMake有两种作用域:Function scope和Directory scope

注意:Directory scope当从add_subdirectory()命令执行嵌套目录中的CMakeLists.txt列表文件时,父CMakeLists.txt其中的变量可以被子CMakeLists.txt使用

不涉及,有兴趣可自行了解

CMake构建项目的方式

直接写入源码路径

#项目较小

#add_executable中直接写入相对路径

#在源代码中引入头文件时需要写相对路径

CMakeLists嵌套

target_include_directorie #头文件目录的声明
target_link_libraries #连接库文件
add_subdirectory #添加子目录
add_library #生成库文件,默认STATIC library(静态库)

${PROJECT_SOURE_DIR} #源码目录即父CMakeLists.txt的目录

CMake生成动态库

lib<name>.so/dll #动态库命名

file() #搜索源文件
add_library(<name> SHARED ${SRC}) #生成动态库
${LIBRARY_OUTPUT_PATH} #导出目录

CMake调用动态库

1、引入头文件

2、声明库目录

3、生成可执行二进制文件

4、连接动态库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值