Cmake基础使用方法

本文详细介绍了CMake的基本用法,包括设置文件输出路径、创建可执行文件、添加静态和动态库、指定库文件路径、搜索文件、链接库以及处理不同平台的库文件命名规则。
摘要由CSDN通过智能技术生成

Cmake

cmake_minimum_required(VERSION 3.0)
project(test)
set(EXECUTABLE_OUTPUT_PATH /home/kunsir/aa/bb/cc) # 设置文件输出路径
add_executable(app add.c div.c)

PROJECT_SOURCE_DIR CMakeList.txt所在位置

CMAKE_CURRENT_SOURCE_DIR CMakeList.txt所在位置

指定头文件所在目录
include_directories(${PROJECT_SOURCE_DIR}/include)
制作静态库
add_library(库名称 STATIC/SHARED 源文件1 源文件2 ...)
# STATIC 静态库
# SHARED 动态库

例:

add_library(calc SHARED $(SRC))
指定生成库文件路径
set(LIBRARY_OUTPUT /home/kunsir/abcdefg)
# 若路径不存在,自动创建
set(a a b) # 链接两个变量

Linux中,静态库名字分为三部分,lib+库名称+.a

​ 动态库 lib+库名称+.so

windows中,静态库名字 lib+库名称+.lib

windows中,动态库名字 lib+库名称+.dll

link_libraries()             链接静态库
target_link_libraries()      链接动态库
搜索文件
方式一:aux_source_directory
aux_source_directory(<dir>, variable)
dir 搜索的路径,variable 搜索得到的源文件存到这个变量中。然后
add_executable(${variable})
方式二:file
file(GLOB/GLOB_RECURSE 变量名 要搜索的文件路径和文件类型)

GLOB:将指定目录下搜索到的满足条件的所有文件名生成一个列表,并将其存储到变量中。

GLOB_RECURSE:递归搜索指定目录,将搜索到的满足条件的文件名生成一个列表,并将其存储到变量中。

例:

file(GLOB MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
file(GLOB NAIN_HEAD ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h)
链接静态库 link_libraries
link_libraries(<static lib> [<static lib>...])

参数一:指定要链接的静态库名字

可以是全名 libxxx.a也可以是掐头(lib)去尾(.a)之后的名字xxx

参数2-N:要链接的其它静态库的名字

如果该静态库不是系统提供的(自己制作或者使用第三方提供的静态库)可能出现静态库找不到的情况,此时要把静态库的路径指定出来:

link_directories(<lib path>)
CMAKE判断文件夹存不存在
set(folder_path "/path/to/folder")

if (EXISTS ${folder_path}) # 判断不存在,在EXISTS前边加NOT
    message("Folder exists: ${folder_path}")
else ()
    message("Folder does not exist: ${folder_path}")
endif ()
  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kunsir_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值