首页 > 编程语言 >CMake入门教程:从零开始构建C/C++项目

CMake入门教程:从零开始构建C/C++项目

时间:2023-05-24 20:25:30浏览次数:58  
标签:文件 CMake 入门教程 C++ 文件夹 构建 源代码 hello

CMake是一个跨平台的自动化构建工具,可以用于构建各种类型的项目,包括C++、C、Python、Java等。本文将从零开始,介绍如何使用CMake构建一个简单的C/C++项目


安装CMake

首先,需要下载并安装CMake。可以从CMake官网下载。如果404 Not Found,可以试一下这个国内镜像网址下载地址


创建项目文件夹

在本地创建一个项目文件夹,用于存放项目的源代码和构建文件。


创建源代码文件

在项目文件夹中创建一个源代码文件,例如hello.chello.cpp。在文件中编写一个简单的程序,例如输出“Hello, World!”。源码如下:

#include <iostream>

int main() {
    std::cout << "Hello, World!\n";
    return 0;
}

新建CMakeLists.txt文件

在项目文件夹中创建一个名为CMakeLists.txt的文件。该文件是CMake的构建配置文件,用于指定项目的源代码文件、编译选项和生成的可执行文件等信息。

以下是一个简单的CMakeLists.txt文件示例:

# 指定CMake版本
cmake_minimum_required(VERSION 3.10) 

# 指定项目名称 
project(hello)  

# 添加源代码文件
add_executable(hello hello.cpp)

上述代码中,cmake_minimum_required指定了CMake的最低版本要求,project指定了项目的名称。add_executable指定了生成的可执行文件名称和源代码文件的路径。


构建项目

在项目文件夹中打开终端,输入以下命令进行构建:

mkdir build  # 创建一个build文件夹
cd build  # 进入build文件夹
cmake ..  # 生成Makefile文件
make  # 编译源代码并生成可执行文件

执行完以上命令后,会在build文件夹中生成一个可执行文件hello


运行项目

在终端中输入以下命令运行生成的可执行文件:

./hello

此时,将输出Hello, World!信息。至此,一个简单的C/C++项目就被成功构建了。


跨平台构建

CMake支持在不同的操作系统和编译器下自动生成对应的构建文件。因此,只需要保证在不同平台上安装了相应的编译器和工具链,就可以实现跨平台构建。

下面是一个在WindowsLinux下都可以构建的CMakeLists.txt文件示例:

cmake_minimum_required(VERSION 3.10)

project(my_project)

if(WIN32)
    set(CMAKE_CXX_COMPILER "MSVC")
elseif(UNIX)
    set(CMAKE_CXX_COMPILER "g++")
endif()

set(CMAKE_CXX_STANDARD 11)

add_executable(hello hello.cpp)

在这个示例中,我们使用if语句来判断平台类型,并设置相应的编译器。通过这种方式,可以实现在不同平台下都可以编译和构建项目的目的。


总结

本文介绍了使用CMake构建一个简单的C/C++项目的步骤。首先需要安装CMake,并创建一个项目文件夹。然后创建源代码文件和CMakeLists.txt文件。最后,在终端中输入命令进行构建和运行。CMake可以根据项目的规模和需求,灵活配置构建选项,方便快捷地完成自动化构建。

标签:文件,CMake,入门教程,C++,文件夹,构建,源代码,hello
From: https://www.cnblogs.com/xiaowange/p/17429384.html

相关文章

  • 深入浅出 C++ 11 右值引用
    彻底搞清楚:右值引用/移动语义/拷贝省略/通用引用/完美转发——以最短的篇幅,介绍常见误解(什么时候要用move?什么时候不能move?为什么move失败?)和基础知识(为什么右值引用变量是左值?为什么会调用移动构造函数?),一步步解释“为什么/是什么/怎么做”。写在前面如果你还不知道C++11......
  • C++右值引用
    右值引用应该是C++11引入的一个非常重要的技术,因为它是移动语义(Movesemantics)与完美转发(Perfectforwarding)的基石:移动语义:将内存的所有权从一个对象转移到另外一个对象,高效的移动用来替换效率低下的复制,对象的移动语义需要实现移动构造函数(moveconstructor)和移动赋值运算符(mo......
  • 各个版本Microsoft Visual C++官方下载链接
     MicrosoftVisualC++2005MicrosoftVisualC++2005RedistributablePackage(32位)http://download.microsoft.com/download/8/B/4/8B42259F-5D70-43F4-AC2E-4B208FD8D66A/vcredist_x86.exeMicrosoftVisualC++2005RedistributablePackage(64位)http://download.......
  • C/C++超市商品管理系统[2023-05-24]
    C/C++超市商品管理系统[2023-05-24]9、超市商品管理系统问题描述:设计并实现一个超市商品管理系统,商品需设置不同的类型,系统可以实现对商品信息的添加,修改,删除,查找等功能,商品信息需要以文件方式保存到计算机硬盘中。基本功能:(1)商品要设置不同的类型,如水果、饮料等;(2)商品信息包......
  • 使用QtCreator C++编写串口调试助手
    Qt小白一枚,喜欢嵌入式应用,以前都是使用别人的串口调试助手,学习了C++以后,自己也尝试着做了简单的串口调试助手,分享给大家吧,希望能帮助到大家,如果有错误,请大家指正。话不多说开干!1.首先看一下我设计的界面(我这里比较简单,大家可根据自己的需求进行设计)(界面设计的过程中,每一个控件......
  • 入门指南:学习C++编程的关键步骤
    C++是一种功能强大的编程语言,广泛应用于软件开发和系统编程。如果您想学习C++编程,下面是一些关键的步骤,可以帮助您入门。安装C++编译器要开始学习C++,您需要安装一个C++编译器。常用的C++编译器有GCC、Clang和MicrosoftVisualC++等。您可以根据自己的操作系统选择适合的编译器,并......
  • c++ base64 编码
    #include<iostream>#include<string>#include<vector>#include<cryptopp/base64.h>#include<cryptopp/filters.h>std::stringBinaryToBase64(conststd::vector<unsignedchar>&data){std::stringencoded;C......
  • 1013 数素数(C++)
    一、问题描述:令 Pi​ 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM​ 到 PN​ 的所有素数。输入格式:输入在一行中给出 M 和 N,其间以空格分隔。输出格式:输出从 PM​ 到 PN​ 的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。输......
  • c++
       ......
  • C++ 引用认知
    引用0x00引用是什么?在应用层面是数据的别名,值、数据宽度、数据地址、加、减与指向的类型一样。在汇编里引用和指针指令、数据宽度是一样。编译器经行了处理,个人推测:当你调用引用类型时,编译器帮咱们直接加*处理。给引用赋值:不能直接赋值;int&a=(int&)7;/......