Exercise 1 - Building a Basic Project

新建目录:s1e1

新建CmakeLists.txt:

cmake_minimum_required(VERSION 3.2.8)
project(s1e1)
add_executable(s1e1 main.cpp)

测试程序:

#include<iostream>
int main(){
    std::cout<<"hello Cmake";
    return 0;
}

cmd命令:

mkdir s1e1_build
cd s1e1_build
cmake ..
cmake --build .
cd debug 
./s1e1.exe

//默认msvc

Exercise 2 - Specifying the C++ Standard

在CmakeLists.txt添加

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

Exercise 3 - Adding a Version Number and Configured Header File

1.新建s1e1Config.h.in

#define s1e1_VERSION_MAJOR @s1e1_VERSION_MAJOR@
#define s1e1_VERSION_MINOR ${s1e1_VERSION_MINOR}

2.CmakeLists.txt更新

cmake_minimum_required(VERSION 3.2.8)
project(s1e1 VERSION 1.0)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(s1e1 main.cpp)
configure_file(s1e1Config.h.in s1e1Config.h)
target_include_directories(s1e1 PUBLIC ${CMAKE_BINARY_DIR})

3.main.cpp更新

#include<iostream>
#include"s1e1Config.h"
int main(int argc,char *argv[]){
    std::cout<<"hello Cmake\n";
      if (argc < 2) {
    // report version
    std::cout << argv[0] << " Version " << s1e1_VERSION_MAJOR << "."
              << s1e1_VERSION_MINOR << std::endl;
    std::cout << "Usage: " << argv[0] << " number" << std::endl;
    return 1;
  }
    return 0;
}
cd s1e1_build
cmake ..
cmake --build .

输出

hello Cmake

D:\code\cpps\s1e1\s1e1_build\Debug\s1e1.exe Version 1.0

Usage: D:\code\cpps\s1e1\s1e1_build\Debug\s1e1.exe number

教程官网