必要基础
编写cmakelist.txt 基础如下:最低版本要求、项目信息、(必写)
变量、打印输出、缓存变量、静态库、动态库
# 最低版本要求
cmake_minimum_required(VERSION 3.10)
# 项目信息(项目名称)
project(ai_1)
# # 输出信息
# message("编译时的自定义的提示消息")
# # 设置变量
# set(txt_1 "我是变量1")
# message("变量内容: " ${txt_1})
# # 缓存变量 永远用第一次的
# # 在终端 -D变量名=新内容 则可改变
# set(txt_2 "新1" CACHE STRINGS "变量缓存描述")
# message("变量内容: " ${txt_2})
常用变量(路径、环境)
编写cmakelist.txt 常用变量如下:
# 提供信息的变量
# PROJECT_NAME 项目名称
# CMAKE_SOURCE_DIR 源码目录
# CMAKE_BINARY_DIR 编译目录
# CMAKE_CURRENT_LIST_FILE CMakeLists.txt文件路径
# WIN32 是否是Windows系统
# UNIX 是否是Linux系统
# CMAKE_SYSTEM_NAME 系统名称
# 设置是否构建动态库,默认为OFF,即构建静态库,设置为ON后,构建动态库
# set(BUILD_SHARED_LIBS ON)
控制CMake运行的变量,更多:https://cmake.org/cmake/help/latest/manual/cmake-variables.7.html#variables-that-change-behavior
输出测试:
message("项目名称 : ${PROJECT_NAME}") # 项目名称
message("源码目录: ${CMAKE_SOURCE_DIR}") # 源码目录
message("编译目录: ${CMAKE_BINARY_DIR}") # 编译目录
message("CMakeLists.txt文件路径: ${CMAKE_CURRENT_LIST_FILE}") # 当前CMakeLists.txt文件路径
message("是否是Windows系统:${WIN32}")
message("是否是Linux系统:${UNIX}")
message("系统名称:${CMAKE_SYSTEM_NAME}")
导入其他.cmake文件,生成自己的.cmake文件(关键字:include)
m1.cmake文件内容如下:
message("调")
CMakeLists.txt 文件内容如下:
cmake_minimum_required(VERSION 3.10)
project(include_demo)
message("调用include前的信息")
# include,引用一次就导入一次
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/m1.cmake")
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/m1.cmake")
message("调用include后的信息")
流程控制(if else 函数)
为true的常量:ON、YES、TRUE、Y、1、非0数字
为false的常量:OFF、NO、FALSE、N、0、空字符串、NOTFOUND
if(1 AND YES)
message("1 AND YES 是 true")
else()
message("1 AND YES 是 false")
endif()
# 定义一个函数,函数名为second_func,有两个参数
function(second_func arg1 arg2)
message("第一个参数:${arg1}, 第二个参数:${arg2}")
endfunction(second_func)
# 调用函数
second_func("hello" "world")