CMake学习

语法

#声明所需要的cmake版本
cmake_minimum_required(VERSION 3.28)

# 设置项目名称
project(test)

#设置生成目标 生成可执行文件 指定源文件依赖...
add_executable(test main.cc)

#设置变量target内容 variable content1 content2
set(target "main") 


#添加列表变量
set(src_files "")
list(APPEND src_files main.cc child.cc)

#预定义变量定义工作目录,CMakeLists.txt所在目录
CMAKE_CURRENT_SOURCE_DIR

#预定义变量定义输出目录,执行cmake命令的目录
CMAKE_CURRENT_BINARY_DIR

#预定义变量定义默认安装目录 make install 默认安装路径
CMAKE_INSTALL_PREFIX

#字符串操作
#string(REPLACE "old" "new" str "old old old")

#将src_files中的.cc替换为.o放到obj_files中
set(obj_files "")
string(REPLACE ".cc" ".o"  obj_files ${src_files})

#添加头文件路径,不想写前缀路径,可以添加头文件路径,相对路径,不用../,根据工作路径,执行路径进行相对
include_directories(path)

#添加生成目标
#add_executable(test ${obj_files})

#添加动态链接库 可执行程序名 库名 库路径
target_link_libraries(test lib1 lib2)

#错误提示,如检查库是否存在 STATUS 普通信息 WARNING 警告信息 FATAL_ERROR 致命错误
message(STATUS "This is a test message")
message(WARNING "This is a test message")
message(FATAL_ERROR "致命错误-导致程序退出")

#源码文件 .cc .cpp .c 等
set(src_files "")
# 将src_dir目录下的所有源码文件名称取出来,放到src_files中
aux_source_directory(src_dir src_files)

#判断文件是否存在
if(NOT EXISTS "file.txt")
    message(FATAL_ERROR "文件不存在")
endif()

#循环遍历
foreach(file ${src_files})
    message(STATUS "file: ${file}")
endforeach()

#执行外部指令
add_custom_command(
    PRE_BUILD #表示在构建之前执行
    COMMAND  #要执行的命令
    ARGS #要执行的命令的参数
    DEPENDS #依赖的文件
    OUTPUT #指定要生成的目标名称
    COMMENT #执行命令要打印的内容
)

#添加嵌套cmake目录
add_subdirectory(subdir)
#设置安装路径 make install 安装路径 可执行程序的安装路径,target可执行程序名,DESTINATION 可执行程序目标,创建bin目录,将可执行程序安装到bin目录下
install(TARGETS ${target} RUNTIME DESTINATION bin)




实践:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值