CMakeLists常用命令

# 设置cmake最低版本
cmake_minimum_required(VERSION 3.2)

# project命令用于指定cmake工程的名称,实际上,它还可以指定cmake工程的版本号(VERSION关键字)、
#简短的描述(DESCRIPTION关键字)、主页URL(HOMEPAGE_URL关键字)
#和编译工程使用的语言(LANGUAGES关键字)
# project(<PROJECT-NAME> [<language-name>...])
# ${PROJECT_NAME}:本CMakeLists.txt的project名称
**project(xxx)**

# project(<PROJECT-NAME> [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]] 
#[DESCRIPTION <project-description-string>][HOMEPAGE_URL <url-string>] 
#[LANGUAGES <language-name>...])
project(mytest VERSION 1.2.3.4)
project (mytest HOMEPAGE_URL “https://www.XXX(示例).com”)

# 获取路径下所有的.cpp/.c/.cc文件(不包括子目录),并赋值给变量中
**aux_source_directory(路径 变量)**


# 设置变量,给文件名/路径名或其他字符串起别名,用${变量}获取变量内容
**set(变量 文件名/路径/...)**

# 打印消息
**message(消息)**

    STATUS:输出一条普通状态消息(默认类型,如果省略类型则默认为 STATUS)。
    WARNING:输出一条警告消息。
    AUTHOR_WARNING:输出一条给构建系统维护者的警告消息。
    FATAL_ERROR:输出一条错误消息并停止 CMake 配置过程。
    SEND_ERROR:与 FATAL_ERROR 相同,输出一条错误消息并停止 CMake 配置过程。
例子:
# 输出一条普通状态消息 
message("This is a status message.") 
# 输出一条警告消息  
message(WARNING "This is a warning message.")  

# 编译子文件夹的CMakeLists.txt
**add_subdirectory(子文件夹名称)**

# 将.cpp/.c/.cc文件生成.a静态库
# 注意,库文件名称通常为libxxx.so,在这里只要写xxx即可
**add_library(库文件名称 STATIC 文件)**
例子:add_library(mylib STATIC src/lib.cpp src/lib2.cpp)//创建一个名为 mylib 的静态库,包含 src/lib.cpp 和 src/lib2.cpp 这两个源文件
add_library(mysharedlib SHARED src/lib.cpp src/lib2.cpp)//创建一个名为 mysharedlib 的动态库

# 将.cpp/.c/.cc文件生成可执行文件
**add_executable(可执行文件名称 文件)**


# 规定.h头文件路径
**include_directories(路径)**

#函数获取指定组件的文件名,并将其保存到变量中
**get_filename_component(<variable> <component> <path> [BASE_DIR <base-dir>] [NAME_WE <name-we>])**
	<variable>:用于存储提取的组件的变量名。
	<component>:要提取的组件类型,如 DIRECTORY、NAME、EXT 等。
	<path>:要处理的文件路径。
    DIRECTORY:提取路径中的目录部分。
    NAME:提取路径中的文件名(包括扩展名)。
    EXT:提取路径中的文件扩展名。
    NAME_WE:提取路径中的文件名(不包括扩展名)。
    ABS_PATH:提取路径的绝对路径。
例子:
  get_filename_component(MY_DIR "${MY_PATH}" DIRECTORY)//MY_DIR 会存储 MY_PATH 的目录部分
  get_filename_component(MY_NAME "${MY_PATH}" NAME) //MY_NAME 会存储文件名(包括扩展名)

#用于向目标(如库或可执行文件)添加编译选项
**add_compile_options(<option>...)**
例子:target_compile_options(my_target PRIVATE -Wall -Wextra -Werror)

**option(<name> "help string describing <name>" [initial value])**
用于定义一个可以在配置时由用户设置的选项。这个选项可以是一个布尔值(ON 或 OFF)
例子:option(MY_OPTION "Enable some feature in my project" ON)
MY_OPTION 是一个选项,它的描述是 "Enable some feature in my project",并且它的默认值是 ON

#用于文件搜索的命令,它会根据给定的模式匹配文件,并将匹配到的文件列表赋值给一个变量
**file(GLOB ...)**
例子:file(GLOB sources "src/*.cpp")   //使用 GLOB 收集当前目录下的所有 .cpp 文件  



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值