zoukankan      html  css  js  c++  java
  • CMake语法—函数(定义&调用)

    CMake语法—函数(定义&调用)

    1 CMake函数定义与调用示例

    1.1 CMakeLists.txt

    cmake_minimum_required(VERSION 3.18)
    
    # 设置工程名称
    set(PROJECT_NAME KAIZEN)
    
    # 设置工程版本号
    set(PROJECT_VERSION "1.0.0.0" CACHE STRING "默认版本号")
    
    # 工程定义
    project(${PROJECT_NAME}
        LANGUAGES CXX C
        VERSION ${PROJECT_VERSION}
    )
    
    # 打印开始日志
    message(STATUS "##########BEGIN_TEST")
    
    # 定义函数
    function(func)
        #1. 打印调用日志
        message(STATUS "call func")
        #2. 控制语句示例
        if (CMAKE_SIZEOF_VOID_P EQUAL 4)
            message(STATUS "X86")   # 32位系统,打印X86
        elseif (CMAKE_SIZEOF_void_p EQUAL 8)
            message(STATUS "X64")   # 32位系统,打印X64
        endif()
    endfunction(func)
    
    # 调用函数:函数名不区分大小写:
    # 调用方式一:
    func()
    # 调用方式二:
    FUNC()
    # 调用方式三:
    fuNC()
    # 调用方式四(3.18及以上版本):
    cmake_language(CALL func)
    # 调用方式四(3.18及以上版本):
    cmake_language(CALL FunC) 
    ## call必须大写
    ## cmake_language(call func)
    
    # 打印结束日志
    message(STATUS "##########END_TEST")
    
    

    1.2 执行CMake配置(cmake_config.bat)脚本

    @echo off
    set currentDir=%~dp0
    set buildDir=%currentDir%
    set cmakeOutputDir=%currentDir%\build
    cmake -S %buildDir% -B %cmakeOutputDir% -G"Visual Studio 16 2019" -T v140 -A x64
    pause
    

    1.3 目录结构

    • learn_cmake:为根目录
    • build:为CMake配置输出目录(在此例中即生成sln解决方案的地方)
    • cmake_config.bat:执行CMake配置过程的脚本(双击直接运行)
    • CMakeLists.txt:CMake脚本

    2 运行结果

    2.1 环境说明

    本地安装VS版本:Visual Studio 2019(2015工具集)

    CMake版本:3.18.2

    F:\learn_cmake
    λ cmake --version
    cmake version 3.18.2
    
    CMake suite maintained and supported by Kitware (kitware.com/cmake).
    

    2.2 运行结果

    F:\learn_cmake
    λ .\cmake_config.bat
    -- Selecting Windows SDK version 10.0.18362.0 to target Windows 6.2.9200.
    -- The CXX compiler identification is MSVC 19.0.24245.0
    -- The C compiler identification is MSVC 19.0.24245.0
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/cl.exe - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/amd64/cl.exe - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- ##########BEGIN_TEST
    -- call func
    -- call func
    -- call func
    -- call func
    -- call func
    -- ##########END_TEST
    -- Configuring done
    -- Generating done
    -- Build files have been written to: F:/learn_cmake/build
    请按任意键继续. . .
    

    2.3 结论

    2.3.1 定义或调用函数时,函数名不区分大小写

    从示例程序32、34、36行可以分析而得

    2.3.2 CMake内置命令不区分大小写

    从示例程序23、25行可以分析而得:CMAKE_SIZEOF_VOID_P为内置,25行大小写不一致,可以正常被识别和运行

    2.3.3 cmake_language调用函数时,CALL必须大写

    从示例程序中38、40正常,42异常分析所得

    2.3.4 endfunction(func)的func函数名可省略

    在示例程序28行,去掉func函数名,可以正常执行

  • 相关阅读:
    calcite 概念和架构
    在vscode中快速生成vue模板
    curl发送post请求
    【vue】chrome已安装Vue Devtools在控制台却无显示
    java(第一天)
    小游戏之莫交叉
    再谈成麻结账程序2.0
    成麻结账程序
    倍福Twincat2 常用快捷键及部分注意事项
    IP地址,子网掩码、默认网关,DNS服务器之间的联系与区别
  • 原文地址:https://www.cnblogs.com/Braveliu/p/15577652.html
Copyright © 2011-2022 走看看