CMake Tutorial1_3 设置语言标准

本文介绍了如何在CMake中设置C++语言标准,以C++11为例展示了CMakeLists.txt的配置,并通过修改为C++98标准引发的错误来说明不同标准的兼容性问题。在构建过程中,详细列出了编译和链接的步骤,最后提到了代码已上传至Github供参考。
摘要由CSDN通过智能技术生成
一 内容
  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
四 参考
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值