# TODO 1: Set the minimum required version of CMake to be 3.10
cmake_minimum_required(VERSION 3.10)
# TODO 2: Create a project named Tutorial
project(Tutorial VERSION 1.0)
# TODO 7: Set the project version number as 1.0 in the above project command
# When this command is called, CMake defines Tutorial_VERSION_MAJOR and Tutorial_VERSION_MINOR behind the scenes.
# Tutorial_VERSION_MAJOR 和 Tutorial_VERSION_MINOR 通常是用于表示项目的主版本号和次版本号的变量
# TODO 6: Set the variable CMAKE_CXX_STANDARD to 11
# and the variable CMAKE_CXX_STANDARD_REQUIRED to True
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# TODO 8: Use configure_file to configure and copy TutorialConfig.h.in to
# TutorialConfig.h
configure_file(TutorialConfig.h.in TutorialConfig.h)
#configure_file 是 CMake 中的一个命令,用于从模板文件生成配置文件。它会读取一个输入文件(通常带有 .in 后缀),替换其中的变量,然后将结果写入到输出文件中。
#模板文件通常位于CMakeLists.txt所在的源目录,即${CMAKE_SOURCE_DIR}
#配置文件的位置通常位于CMake的二进制目录(构建目录)中,即${CMAKE_BINARY_DIR}
#configure_file()需要模板文件已经存在,不需要输出文件已经存在
#
#TutorialConfig.h.in在 项目根目录/Step1 中
#该文件中:会有@PROJECT_NAME@,@VERSION@等格式的变量
#复制该文件中的内容,并将这些变量替换为相应的值,生成文件TutorialConfig.h
#TutorialConfig.h 在 项目根目录/Step1_build 中
# TODO 3: Add an executable called Tutorial to the project
add_executable(Tutorial tutorial.cxx)
# Hint: Be sure to specify the source file as tutorial.cxx
# TODO 9: Use target_include_directories to include ${PROJECT_BINARY_DIR}
target_include_directories(Tutorial PUBLIC "${PROJECT_BINARY_DIR}")
#这行代码的意思是将 ${PROJECT_BINARY_DIR} 目录添加到 Tutorial 目标的公共包含路径中。
#项目的二进制目录${PROJECT_BINARY_DIR}是指 CMake 构建系统生成的所有构建文件(如编译后的目标文件、可执行文件、库文件等)所在的目录。这个目录通常是在运行 CMake 配置命令时指定的。
#这里是Step1_build目录
#message("Binary directory: ${PROJECT_BINARY_DIR}")
#Binary directory: H:/develop/code/Learn/LearnCMake/cmake-3.31.2-tutorial-source/Step1_build
#包含路径是编译器在编译源代码时查找头文件(.h 或 .hpp 文件)的位置
#这次源代码需要的头文件TutorialConfig.h的位置在Step1_build中,也就是${PROJECT_BINARY_DIR}
#因此需要将该位置添加为包含路径
#PUBLIC是指定包含路径为公共包含路径, 说明目标Tutorial和目标的依赖项都可以使用该包含路径