CMakeLists.txt 文件如下
#最低支持版本
cmake_minimum_required(VERSION 3.10.2)
#当前工程的名称
project("myapplication")
#通过file定义变量SOURCE,使用GLOB命令来从源码树中收集源文件列表,这里收集所有的cpp文件
#然后将收集到的文件路径存储在SOURCE变量
file(GLOB SOURCE *.cpp)
#aux_source_directory(dir 变量) 将指定目录下所有的源文件并存储在一个变量中
aux_source_directory(../../../../../../../Source/util utilSource)
#添加库,构建的时候最终会根据配置生成相应的库
add_library(
test-lib #指定了库的名称
SHARED #SHARED 表示生成动态库; STATIC 表示生成静态库
${SOURCE} #将SOURCE变量指代的所有源文件编译到库中
${utilSource} #将utilSource变量指代的所有源文件编译到库中
)
#find_library(变量 library)查找到指定的预编译库,并将它的路径存储在变量中。
#查找ndk的log库 赋给变量log-lib
find_library(
log-lib
log)
#将log-lib指代的log库链接到test-lib中。可以链接动态库或链接静态库
target_link_libraries(
# 目标库
test-lib
# 目标库需要链接的库
${log-lib})
#打印消息
#第一个参数是消息的等级 不填默认就是重要消息
message("重要消息")
message(STATUS "非重要消息")
message(WARNING "警告消息")
#声明变量 set(变量名 变量值) ,cmake中所有的变量都是string类型
set(NAME 张三)
set(AGE 12)
message(WARNING "name is ${NAME},age is ${AGE}") # name is 张三,age is 12
#unset(变量名) 用来移除一个变量
unset(NAME)
message(WARNING "name is ${NAME},age is ${AGE}") #name is ,age is 12
#声明列表 set(变量名 value1 value2 value3...)或set(变量名 "value1;value2;value3...")
set(list1 张三 李四 王武)
set(list2 "张三;李四;王武")
message(WARNING "list1 is ${list1}") #list1 is 张三;李四;王武
message(WARNING "list2 is ${list2}") #list2 is 张三;李四;王武
unset(list1)
unset(list2)
#流程控制语句
# 真 可以用(1、TRUE、ON、YES、Y、非0值)表示
# 假 可以用(0、FALSE、OFF、NO、NOTFOUND)表示
## if条件语句
set(COD1 OFF)
set(COD2 ON)
if (${COD1})
message(WARNING 111)
elseif(${COD2})
message(WARNING 222)
else()
message(WARNING 333)
endif() #结束if语句
unset(COD1)
unset(COD2)
## while循环语句
set(a x)
#a STREQUAL "xxx" 等价于 a == xxx ; NOT a STREQUAL xxx 等价于 a != xxx
while(NOT a STREQUAL xxx)
set(a ${a}x)
message(WARNING ${a})
endwhile()
unset(a)
## for循环语句
#循环遍历【1,2,3,4】
foreach(item 1 2 3 4)
message(WARNING ${item})
endforeach()
#遍历列表 变量 IN LISTS 列表
set(list1 张三 李四 王武 小明)
foreach(item IN LISTS list1)
message(WARNING ${item})
endforeach()
#函数
#函数申明
#function(函数名 参数1 参数2 参数3..)
#函数体
#ARGC 参数的个数
#ARGV0 ARGV1 ARGV2... 参数0 参数1 参数2...
#ARGV 所有参数
#endfunction()
function(printArgs x1 x2 x3)
message(WARNING 参数x1=${x1},参数x2=${x2},参数x3=${x3})
message(WARNING 参数个数=${ARGC})
message(WARNING 第一个参数=${ARGV0},第二个参数=${ARGV1},第三个参数=${ARGV2})
message(WARNING 所有参数=${ARGV})
endfunction()
#函数调用
printArgs(hello1 haha nihao)