Cmake·

[#2][Lucky start][A菌严肃的CMake手记]

美式A菌

美式A菌

52 0

Intro

  • 前话
    • 在某天A菌学习CMake开始前。
    • 打开Zeal(这里Linux是Zeal,Mac是Dash)扫了一眼API。
    • 然后......

Q? & A?

  • Q: 茫茫多的API,我们如何学习?
    • 我也不知,总之边用边学。
    • 从简单的例子开始。
    • 逐渐丰富项目结构,开始入手一些API。
      • 遇到问题,查找资料和API列表。
      • 反复这个过程。
    • 忌: 短平快。
    • 宜: 积累。
  • Q: 我们从哪里开始?
    • 可以从CMakeGuides部分开始。
    • A菌也是借用这部分充当教材来编撰这篇文章。
    • 整个编撰的过程为我学习,理解,简化,通俗化的内容输出过程。
    • 我们可以从Source获得CMake的源代码,在CMake/Help/guide目录下获取部分帮助。

前提准备

  • 安装好GCC/G++编译器并配置环境变量
  • 系统安装好CMake软件并配置bin目录至环境变量path

开始

Step1: 建立一个简单的C++项目

// main.cpp
// 这些都是标准库,标准库可以理解成 官方提供的API
#include <cmath> // 提供数学函数
#include <cstdlib> // 提供通用工具函数
#include <iostream> // 提供输入输出流功能。
#include <string> // 提供字符串处理功能

// main 函数是程序的入口点
// argc 是命令行参数的数量
// argv 是命令行参数的数组
int main(int argc, char* argv[])
{
// 检查命令行参数的数量。如果参数少于 2 个(即没有提供数字),则输出使用说明并返回 1,表示错误。
  if (argc < 2) {
    std::cout << "Usage: " << argv[0] << " number" << std::endl;
    return 1;
  }
// 将命令行参数转换为 `double` 类型的数字。
  const double inputValue = atof(argv[1]);
// 计算输入值的平方根,并输出结果。程序返回 0,表示成功。
  const double outputValue = sqrt(inputValue);
  std::cout << "The square root of " << inputValue << " is " << outputValue
            << std::endl;
  return 0;
}

Step2: 尝试编译

通常我们会使用g++进行编译,编译器输出a.out二进制文件,然后我们可以直接使用./a.out运行程序。

假使我们使用了许多lib,项目非常复杂,恐怕g++也不会那么好用了。 于是我们才需要学习CMake,接下来我们尝试使用CMake进行编译。

Step3: CMake

  • 建立CMakeLists.txt
  • 我们尝试使用三个API描述这个计算平方根的项目
    • cmake_minimum_required()
    • project()
    • add_executable()
// 顶层CMakeLists.txt必须使用 cmake_minimum_required()指定最低 CMake 版本,以确保兼容性。
cmake_minimum_required(VERSION 3.10)
// 声明项目名称
project(ACM_1)
// ACM_1项目中有一个可执行文件名为main.cxx
add_executable(ACM_1 main.cxx)

Step4: 尝试编译

# 在CMake配置文件同一级创建build目录
mkdir build
# 切换当前目录为build目录
cd build
# 使用cmake命令生成一些文件与Makefile
cmake ..

最后我们使用make来编译出我们的可执行文件

总结

致此我们的第一个CMake起点项目完成啦,要记住三个API哦。

所属系列

从当前文章继续阅读它所在合集中的前后内容。

相关文章

优先推荐同专题、同标签和同作者内容,补足热门文章。

评论 0

登录 后参与评论

评论

成为第一个评论的人