CMake Tutorial1_3 设置语言标准

本文介绍了如何在CMake中设置C++语言标准,以C++11为例展示了CMakeLists.txt的配置,并通过修改为C++98标准引发的错误来说明不同标准的兼容性问题。在构建过程中,详细列出了编译和链接的步骤,最后提到了代码已上传至Github供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 内容
  1. CMake Tutorial1_1 最简单的例子 基础上修改。
  2. 主要说明 CMake如何设置C++语言标准
  3. 修改CMakeLists.txt
    # 设置CMake最低版本
    cmake_minimum_required(VERSION 3.16)
    
    # 设置项目名称及版本
    project(Tutorial VERSION 1.0)
    
    # 设置语言标准,此处为C++11
    set(CMAKE_CXX_STANDARD 11)
    set(CMAKE_CXX_STANDARD_REQUIRED True)
    
    # 生成可执行文件
    add_executable(Tutorial main.cc)
    
  • CXX_STANDARD 可知,当前CMAKE_CXX_STANDARD可设置的值有98,11,14,17,20,23。
  1. 修改 main.cc
    int main() {
      auto f = [](){
       std::cout << "C++11, auto & lambda express feature." << std::endl;
      };
      f();
      return 0;
    }
    
二 构建
  1. 与Tutorial1_1相同,创建并进入构建目录build
  2. build&run
    lee@leedeMacBook-Pro build % cmake ..
    -- The C compiler identification is AppleClang 12.0.0.12000032
    -- The CXX compiler identification is AppleClang 12.0.0.12000032
    -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
    -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
    -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /Users/lee/research/cmake_learn/cmake_tutorial/step1_3/build
    lee@leedeMacBook-Pro build % cmake --build .
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /Users/lee/research/cmake_learn/cmake_tutorial/step1_3/build
    Scanning dependencies of target Tutorial
    [ 50%] Building CXX object CMakeFiles/Tutorial.dir/main.cc.o
    [100%] Linking CXX executable Tutorial
    [100%] Built target Tutorial
    lee@leedeMacBook-Pro build % ./Tutorial 
    C++11, auto & lambda express feature.
    
  3. 如果将标准设置为C++98呢?有如下报错:
    lee@leedeMacBook-Pro build % cmake --build .
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /Users/lee/research/cmake_learn/cmake_tutorial/step1_3/build
    [ 50%] Building CXX object CMakeFiles/Tutorial.dir/main.cc.o
    /Users/lee/research/cmake_learn/cmake_tutorial/step1_3/main.cc:4:3: warning: 
          'auto' type specifier is a C++11 extension [-Wc++11-extensions]
      auto f = [](){
      ^
    /Users/lee/research/cmake_learn/cmake_tutorial/step1_3/main.cc:4:12: error: 
          expected expression
      auto f = [](){
               ^
    1 warning and 1 error generated.
    make[2]: *** [CMakeFiles/Tutorial.dir/main.cc.o] Error 1
    make[1]: *** [CMakeFiles/Tutorial.dir/all] Error 2
    make: *** [all] Error 2
    
三 Github
四 参考
CMake是一个用于管理项目构建过程的开源工具。它通过配置文件的方式来定义源代码、编译器选项、库依赖和构建规则等信息,并根据这些信息生成针对不同平台和编译器的构建脚本。 CMake的教程可以帮助我们更好地理解和使用这个工具。在教程中,我们可以学习到CMake的基本概念、语法和用法,以及如何编写CMakeLists.txt文件来定义项目的构建过程。 教程一般会从简单的示例开始,逐步介绍CMake的各个方面。首先,我们可以学习如何定义基本的项目信息,如项目名称、版本号和语言要求。然后,我们可以了解如何添加源代码文件、头文件目录和编译选项。接着,我们可以学习如何定义库依赖和链接选项,以及如何生成可执行文件或库文件。 教程还可以教我们如何使用CMake的命令来进行条件编译、循环遍历和文件查找等操作。此外,教程还会介绍如何使用CMake的变量、宏和函数来简化构建过程和提高代码的可读性。 通过学习CMake的教程,我们可以更加高效地管理和构建项目,提高代码的可维护性和可移植性。无论是小型项目还是大型项目,CMake都可以帮助我们更好地组织代码、管理依赖和发布软件。 总之,CMake的教程是学习和使用CMake的重要资源,它可以帮助我们掌握CMake的基本概念和用法,提高项目的构建效率和质量。希望通过学习CMake的教程,我们能够更加熟练地使用这个工具,为我们的项目开发和维护带来便利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值