cmake---常用的cmake函数的简单介绍

https://blog.youkuaiyun.com/2301_79854313/article/details/141197520

函数

    add_executable(<name> <options>... <sources>...)
    添加一个名为 <name> 的可执行目标,该目标将从命令调用中列出的源文件构建。
    cmake_minimum_required()
    设置项目所需的cmake最低版本
    cmake_minimum_required(VERSION 3.10)
    project()
    image.png
    image.png
    set()设置变量
    image.png设置正常变量
    image.png设置缓存条目
    image.png设置环境变量
    设置正常变量时,如果给定了 PARENT_SCOPE 选项,则变量将在当前作用域之上的作用域中设置。每个新目录或 function() 命令都会创建一个新的作用域。也可以使用 block() 命令创建作用域。 set(PARENT_SCOPE) 将变量的值设置到父目录、调用函数或包含范围(无论哪种情况适用)。变量值的先前状态在当前作用域中保持不变(例如,如果它之前未定义,它仍然是未定义,如果它有值,它仍然是值)。
    image.png
    aux_source_directory()
    image.png
    收集指定目录中所有源文件的名称,并将列表存储在提供的 <variable> 中。此命令旨在由使用显式模板实例化的项目使用。模板实例化文件可以存储在 Templates 目录中,并使用此命令自动收集,以避免手动列出所有实例化.
    使用此命令可以避免为库或可执行目标编写源文件列表。虽然这看起来可行,但CMake无法生成一个知道何时添加了新源文件的构建系统。通常,生成的构建系统知道何时需要重新编译CMake,因为 CMakeLists.txt 文件被修改以添加新的源代码。如果只是将源代码添加到目录中而不修改此文件,则必须手动编译CMake以生成包含新文件的构建系统。
    file()
    GLOB:指定目录下搜索所有满足的表达式的文件,将其存储在变量中
    image.png
    GLOB_RECURSE:递归搜索
    image.png
    image.png
    list()
    可用以下命令向所表示的变量中追加文件
    image.png
    其他操作请参考cmake文档
    if()
    else()
    elseif()
    endif()
    image.png
    <conditon>请参考cmake(if)文档
    image.png
    message()
    message() 是 CMake 中一个用于输出信息到控制台的命令。这在调试和记录构建过程信息时非常有用。你可以使用 message() 打印普通消息、警告、错误信息等
    message([<mode>] "<message>")
    <mode>包括STATUS、WARNING、AUTHOR_WARNING 、SEND_ERROR 、FATAL_ERROR
    add_subdirectory()
    image.png
    如果你在多个目录下都有CMakeList.txt文件,需要在父目录或者根目录
    添加该函数,使CMakeList.txt之间建立联系
    image.png
    目录关系为:
    image.png
    include_directories()
    image.png
    表示头文件的搜索目录
    image.png
    include()
    加载并执行另外一个cmake文件。这对于组织项目或在多个项目之间重用通用配置非常有用
    image.png
    add_library()
    生成静态库、共享库或对象库
    add_library(<name> [STATIC | SHARED | OBJECT] <source1> [<source2> ...])
    image.png
    target_link_libraries()
    target_link_libraries(<target> [PUBLIC | INTERFACE | PRIVATE] <libraries>)
    image.png
    image.png
    target_link_directories()
    指定链接器在链接给定目标时应在其中搜索库的路径
    image.png
    add_custom_target()
    add_custom_target() 是 CMake 中的一个命令,用于定义一个自定义的目标(target),这个目标通常用于执行一些非编译相关的任务,比如清理临时文件、生成文档、运行测试脚本等。

add_custom_target(name [COMMAND command [ARGS args...]]
2                  [DEPENDS dependencies...]
3                  [WORKING_DIRECTORY directory]
4                  [COMMENT comment]
5                  [VERBATIM | APPEND]
6                  [BYPRODUCTS byproducts...]
7                  [COMMAND_EXPAND_LISTS])

    1
    2
    3
    4
    5
    6
    7

image.png
以下代码说明:创建submit-p0对象,将变量${P0_FILES}所代表的文件,使用zip命令打包成名为project0-submission.zip的压缩包,工作目录为变量${CMAKE_CURRENT_SOURCE_DIR}
image.png

    add_dependencies()
    add_dependencies() 是 CMake 中的一个命令,用于指定一个目标(target)依赖于其他目标。当你希望确保某个目标(例如一个可执行文件或库)在构建之前先构建另一个目标(如一个自定义的构建步骤或者另一个库)时,这个命令就非常有用。
    add_dependencies(target dep1 dep2 ... depN)
    enabletesting()
    启用 CMake 的测试功能。
    image.png
    add_test()
    add_test() 命令用于定义一个测试,它可以在构建过程中自动运行
    image.png
    find_package()
    find_package() 命令用于查找外部库和工具,并配置相应的变量以便在构建过程中使用。find_package() 可以帮助你轻松地集成第三方库到你的项目中,而无需手动设置库的路径和编译选项。
    find_package(PackageName [version] [EXACT | VERSION version] [QUIETLY] [REQUIRED] [COMPONENTS components ...])
    image.png
    find_library()
    find_library() 命令用于查找一个库文件,并设置一个变量来保存库文件的完整路径。这对于手动查找库文件特别有用,尤其是在库文件不在标准位置时。
    find_program()
    image.png
    install() 是 CMake 中用于指定如何安装目标、文件和目录的命令。它定义了如何将构建生成的内容复制到安装目录
    install(<TYPE> <name> [DESTINATION <dir>] [OPTIONS])
    image.png

变量

指定构建项目所需的c++标准

    CMAKE_CXX_STANDARD
    CMAKE_CXX_STANDARD_REQUIRED

image.png

    CMAKE_SOURCE_DIR: 项目的根源代码目录。
    CMAKE_BINARY_DIR: 项目的根构建目录。
    CMAKE_CURRENT_SOURCE_DIR: 当前处理的 CMakeLists.txt 文件的源代码目录。
    CMAKE_CURRENT_BINARY_DIR: 当前处理的 CMakeLists.txt 文件的构建目录。
    CMAKE_INSTALL_PREFIX: 默认的安装目录(通常是 /usr/local)。
    CMAKE_BUILD_TYPE: 构建类型,如 Debug、Release、RelWithDebInfo、MinSizeRel。
    CMAKE_CXX_COMPILER: C++ 编译器的路径。
    CMAKE_C_COMPILER: C 编译器的路径。
    CMAKE_PREFIX_PATH: 搜索额外的 CMake 模块和包的路径。
    CMAKE_MODULE_PATH: 自定义 CMake 模块的路径。
    CMAKE_EXPORT_COMPILE_COMMANDS: 是否生成 compile_commands.json 文件,用于代码分析工具。
    CMAKE_VERBOSE_MAKEFILE: 设置为 ON 时,会显示详细的构建命令。

参考

    cmake文档https://cmake.org/cmake/help/latest/
    爱编程的大丙https://subingwen.cn/cmake/CMake-primer/
    通义
    chatgpt
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.youkuaiyun.com/2301_79854313/article/details/141197520

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值