cmake跨平台构建工具的学习笔记

CMake跨平台构建工具的学习笔记

简介

CMake是一个跨平台的构建工具,可以自动生成Makefile、Visual Studio等工程文件,支持多种编程语言,包括C、C++、Java等。CMake语法简单、易读、易写,适合中小型项目的构建。

安装CMake

在官网 https://cmake.org/download/ 上下载适合自己系统的CMake安装包,安装完成后,可以在命令行中输入:

cmake --version

检查是否安装成功。

CMake项目构建

1. 配置CMake项目

新建一个文件夹,例如myproject,并在该文件夹下新建一个C++源文件main.cc,包含一个main函数。

#include <iostream>

using namespace std;

int main() {
    cout << "Hello, World!" << endl;
    return 0;
}

在myproject主目录下创建一个名为CMakeLists.txt的文件,并添加以下内容:

project(hello)  # 项目名
add_executable(hello main.cc)  # 生成可执行文件的名称及其对应的源文件

接着,我们通过终端进入myproject文件夹,并执行以下命令:

mkdir build
cd build
cmake ..

这里,我们新建了一个build目录,用于存放编译生成的文件,执行cmake ..命令将CMakeLists.txt中的配置信息写入Makefile文件中。

2. 构建CMake项目

上一步成功创建了Makefile文件,接下来我们执行以下命令:

make

这时,我们可以看到当前目录下生成了hello可执行文件,接着我们执行以下命令运行程序:

./hello

如果一切顺利,我们将在终端中看到输出结果为“Hello, World!”。至此,我们成功完成了一个基于CMake的C++项目的构建。

3. CMake项目导出为其他构建系统文件

在CMake中,我们可以将项目导出为其他构建系统所需的文件,比如make、Ninja、Visual Studio等。这里以导出为make为例。

在终端中进入myproject/build目录,执行以下命令:

cmake .. -G "Unix Makefiles"

这里,我们将当前目录下的Makefile文件重新生成,并命名为“Makefile”,可以看到与上一次生成的Makefile文件有所不同。此时我们执行以下命令,即可在当前目录生成新的Makefile文件:

make -f Makefile

这样就可以通过CMake快速生成不同构建系统需要的文件。

示例说明

示例1:生成C++静态库

在CMake中,我们可以通过以下命令生成C++静态库:

add_library(lib STATIC foo.cc bar.cc)

其中,lib为静态库名称,foo.cc和bar.cc为库文件中的源文件,可以包含一个或多个源文件。

示例2:生成C++动态库

同样在CMake中,我们可以通过以下命令生成C++动态库:

add_library(lib SHARED foo.cc bar.cc)

其中,SHARED表示生成动态库,静态库示例中已经介绍过。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:cmake跨平台构建工具的学习笔记 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • MathWorks Matlab R2018b(V9.5)破解版密钥安装+许可激活详细教程(含下载)

    一、前言 MathWorks Matlab是一款数学软件,该软件在数值计算,信号处理和通信算法的设计和实现等方面得到了广泛应用。下面是MathWorks Matlab R2018b(V9.5)破解版密钥安装+许可激活详细教程(含下载)。 二、下载安装包 1.打开MathWorks官网,进入下载中心,选择自己所需的版本下载。 2.打开下载的压缩包,找到“set…

    C 2023年5月22日
    00
  • ToString()使用方法汇总(c#)

    ToString()使用方法汇总(c#) 什么是ToString() 在C#中,ToString()是一个对象方法,用于将当前对象转换为字符串表示形式。 ToString()的使用 使用ToString()方法可以将对象转换为字符串。ToString()方法有很多重载版本,可以支持不同的数据类型。下面是ToString()方法的一些常见用法: 将数字转换为字…

    C 2023年5月22日
    00
  • C++11 constexpr使用详解

    C++11 constexpr使用详解 什么是constexpr C++11引入了constexpr关键字,可在编译时求值的表达式必须使用constexpr标识。constexpr允许指定在编译时计算表达式的值,可以用于更高效的编译时计算。 constexpr函数 使用constexpr关键字定义的函数必须满足以下要求: 返回值类型和所有参数类型均应该是字面…

    C 2023年5月22日
    00
  • C语言超详细讲解函数栈帧的创建和销毁

    C语言超详细讲解函数栈帧的创建和销毁 什么是函数栈帧? 函数栈帧也叫做栈帧,是存放函数局部变量、参数、函数返回地址等信息的一段内存空间。在函数被调用时,会动态地在栈上分配一段空间来存放函数栈帧,当函数执行完毕后释放这段空间。 函数栈帧的创建过程 当函数被调用时,会通过以下步骤创建函数栈帧: 将函数调用后下一条指令(即函数体里的第一条语句)的地址压入栈中,这里…

    C 2023年5月23日
    00
  • 基于C语言打造高效通讯录的示例代码

    针对“基于C语言打造高效通讯录的示例代码”的完整攻略,我们可以分为以下几个步骤来进行讲解: 1.设计数据结构 在打造通讯录的代码中,我们需要首先设计合理的数据结构来储存通讯录信息。在此我们可以采用链表数据结构来实现。所以在数据结构的设计中,需要定义一个结构体来存储每位通讯录人员的信息,然后私有一个指向实体的指针来实现链表。 2.实现通讯录基本功能 通讯录的基…

    C 2023年5月24日
    00
  • va_list(),va_start(),va_arg(),va_end() 详细解析

    va_list(),va_start(),va_arg(),va_end() 详细解析 这四个函数在 C 语言中常用于对函数参数数量和类型不定的情况进行处理。下面将详细解析这四个函数。 va_list 它是 C 标准库中的一个类型,通常是一个指针,指向参数列表的起始位置。它用于存储从 va_start() 开始到参数列表最后一个参数数据地址的位置。 va_s…

    C 2023年5月23日
    00
  • Win10系统磁盘C:\盘空间太大如何缩小?分区工具进行Win10硬盘区分

    Win10系统磁盘C:\盘空间太大如何缩小?这是一个常见的问题,很多人都会面临这个问题。本文将介绍如何使用分区工具进行Win10硬盘区分。 准备工作 在进行分区前,我们需要准备以下工具: EaseUS Partition Master,这是一款免费的磁盘分区工具。 备份你的数据,因为对硬盘进行分区操作可能会导致数据丢失。 使用EaseUS Partition…

    C 2023年5月23日
    00
  • Windows10系统遇到”不能打开要写入的文件”怎么办

    下面是关于“Windows10系统遇到’不能打开要写入的文件’怎么办”的完整攻略,分为以下几个步骤: 1. 检查文件权限 首先,我们需要确认文件是否有正确的权限限制。当一个文件受限时,您可能无法访问它,甚至将其写入到其中。 如何检查文件权限 单击鼠标右键并选择 “属性” 选项 选择 “安全” 标签页并检查是否与您的用户帐户相关联。 如果您有权限,请在相应的区…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部