C++学习笔记—基础篇

1. 安装最基础的编译环境

1
sudo apt install build-essential

验证有没有装好,输出版本信息即装好了

1
2
g++ --version
make --version

2. 第一个程序

使用任意的编辑器编写一个hello.cpp然后编译

1
g++ hello.cpp -o hello
  • g++: 调用 GNU C++ 编译器。
  • hello.cpp: 你要编译的源文件。
  • o hello: 这个选项告诉编译器,将生成的可执行文件命名为 hello。如果没有 o 选项,默认会生成一个名为 a.out 的文件。

3. 使用 make 简化编译

如果项目比较复杂的话,只通过命令编译就会很长

1
g++ main.cpp math_utils.cpp -o my_calc -Wall -Wextra -std=c++11

make 通过 Makefile 文件来解决手动编译的许多问题

创建一个 Makefile 文件然后通过 make 命令就可以自动的编译(过程省略)但是 Makefile 文件不是很好写

4. 使用 CMake

CMake 作为构建系统生成器,解决了 make 的许多局限性,尤其是在跨平台和管理复杂性方面。

  1. 创建 CMakeLists.txt:calculator 目录下创建 CMakeLists.txt 文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    # CMake 最低版本要求
    cmake_minimum_required(VERSION 3.10)

    # 项目名称和语言
    project(Calculator LANGUAGES CXX)

    # 设置 C++ 标准
    set(CMAKE_CXX_STANDARD 11)
    set(CMAKE_CXX_STANDARD_REQUIRED True)

    # (可选) 添加编译选项,会传递给编译器
    # add_compile_options(-Wall -Wextra) # 或者更现代的方式如下:
    target_compile_options(my_calc INTERFACE -Wall -Wextra) # 应用于 my_calc 及其使用者

    # 添加可执行文件目标
    # CMake 会自动分析 main.cpp 和 math_utils.cpp 之间的依赖
    # 以及它们对 math_utils.h 的依赖
    add_executable(my_calc main.cpp math_utils.cpp)

    # 如果头文件在 include 目录:
    # target_include_directories(my_calc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)

  2. 操作 (Out-of-Source Build):

    • 创建构建目录并进入:

      1
      2
      mkdir build
      cd build
    • **运行 CMake (配置阶段):**CMake 会读取 ../CMakeLists.txt,检测你的编译器,并生成一个 Makefile (或其他本地构建系统文件) 在 build 目录中。它会自动处理 main.cpp 对 math_utils.h 的依赖。

      bash

      1
      cmake ..
    • 运行构建工具 (构建阶段):make 会使用 CMake 生成的 Makefile 来编译项目。可执行文件 my_calc 会出现在 build 目录。

      bash

      1
      make
    • 运行:

      bash

      1
      ./my_calc
    • 清理:

      • 可以使用 make clean (由 CMake 生成的 Makefile 提供)。
      • 或者更彻底地,删除整个 build 目录:cd .. && rm -rf build