如何在Linux系统下使用CMake进行编译?

CMake 是一个跨平台的自动化构建系统,用于管理软件编译过程。在 Linux 上使用 CMake 编译项目,首先需要安装 CMake,然后通过命令 cmake . 生成 Makefile,最后执行 make 命令进行编译。

CMake 编译 Linux 指南

CMake 是一个开源、跨平台的构建工具,通过编写简单的配置文件(CMakeLists.txt),可以生成本地的 Makefile,从而方便地管理项目的构建过程,本文将详细介绍如何在 Linux 环境下使用 CMake 编译程序,包括安装步骤、简单样例、多源文件处理以及不同目录下的源文件处理等。

如何在Linux系统下使用CMake进行编译?

目录结构

|-CMakeLists.txt
|-main.c
|-testFunc/
    |-testFunc.c
    |-testFunc.h
|-testFunc1/
    |-testFunc1.c
    |-testFunc1.h

一、安装 CMake

我们需要在 Linux 系统中安装 CMake,以下是安装步骤:

1、更新包管理器

    sudo apt update

2、安装 CMake

    sudo apt install cmake

3、验证安装

    cmake --version

二、简单样例

我们通过一个简单的例子来体验如何使用 CMake 编译程序。

1、创建 main.c 文件

    #include <stdio.h>
    int main(void) {
        printf("Hello World
");
        return 0;
    }

2、创建 CMakeLists.txt 文件

    cmake_minimum_required (VERSION 2.8)
    project (demo)
    add_executable(main main.c)

3、运行 CMake

在终端中进入main.c 所在的目录,然后执行以下命令:

    cmake .

这将生成一个 Makefile 文件。

4、编译项目

    make

编译完成后,会生成可执行文件main,运行该文件:

如何在Linux系统下使用CMake进行编译?

    ./main

输出结果应为:

    Hello World

5、清理项目

如果需要重新生成目标文件,可以使用以下命令删除之前的编译文件:

    make clean

三、同一目录下多个源文件

当有多个源文件时,我们可以在CMakeLists.txt 文件中指定所有需要的源文件。

1、添加源文件

main.c 所在目录下添加两个文件testFunc.ctestFunc.h

testFunc.c 内容如下:

    #include <stdio.h>
    #include "testFunc.h"
    void func(int data) {
        printf("data is %d
", data);
    }

testFunc.h 内容如下:

    #ifndef TEST_FUNC_H
    #define TEST_FUNC_H
    void func(int data);
    #endif

2、修改 main.c

    #include <stdio.h>
    #include "testFunc.h"
    int main(void) {
        func(100);
        return 0;
    }

3、修改 CMakeLists.txt

    cmake_minimum_required (VERSION 2.8)
    project (demo)
    add_executable(main main.c testFunc.c)

4、重新运行 CMake 和 Make

    cmake .
    make

运行可执行文件main,输出结果应为:

    data is 100

四、不同目录下多个源文件

当项目文件较多时,通常会根据功能分类放在不同的目录下,这种情况下,如何编写CMakeLists.txt 文件呢?

如何在Linux系统下使用CMake进行编译?

1、创建目录结构

    mkdir -p testFunc1/
    mv testFunc1.c testFunc1/
    mv testFunc1.h testFunc1/

2、修改 main.c

    #include <stdio.h>
    #include "testFunc.h"
    #include "testFunc1.h"
    int main(void) {
        func(100);
        func1(200);
        return 0;
    }

3、修改 CMakeLists.txt

    cmake_minimum_required (VERSION 2.8)
    project (demo)
    
    aux_source_directory(. SRC_LIST)
    add_executable(main ${SRC_LIST})

4、重新运行 CMake 和 Make

    cmake .
    make

运行可执行文件main,输出结果应为:

    data is 100
    data is 200

五、相关问答与解答

1、问题:如何更改 CMake 构建目录?

答:可以在终端中使用cd 命令进入指定的构建目录,

   mkdir build && cd build
   cmake ..
   make

这样会在当前目录下生成构建文件,而不是在源代码目录下。

2、问题:如何设置编译器选项?

答:可以在CMakeLists.txt 中使用set 命令设置编译器选项,

   set(CMAKE_CXX_FLAGS "-Wall -O2")

到此,以上就是小编对于“cmake编译linux”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/54291.html<

(0)
运维的头像运维
上一篇2025-01-14 10:50
下一篇 2025-01-14 11:00

相关推荐

  • Linux MySQL退出命令是哪个?

    在Linux操作系统中,与MySQL数据库的交互通常通过命令行客户端完成,而退出MySQL命令行环境是日常操作中的基础环节,掌握正确的退出命令不仅能提升操作效率,还能避免因异常退出导致的数据或连接问题,本文将详细解析Linux环境下MySQL的退出命令,涵盖多种退出方式、适用场景及注意事项,并通过表格对比不同命……

    2025-11-20
    0
  • C程序设计师招聘,需具备哪些核心技能?

    在当今数字化转型的浪潮中,C程序设计师作为软件开发领域的核心力量,其招聘需求持续保持旺盛态势,C语言凭借其高效性、灵活性和对硬件的深度控制能力,在操作系统、嵌入式系统、游戏引擎、高性能计算等关键领域仍不可替代,企业对C程序设计师的招聘不仅关注技术硬实力,更重视工程实践能力和问题解决素养,以下从岗位职责、任职要求……

    2025-11-18
    0
  • nginx Linux启动命令具体是什么?

    在Linux系统中,Nginx作为高性能的Web服务器和反向代理工具,其启动命令是运维操作中的基础技能,Nginx的启动过程涉及可执行文件调用、配置文件校验、进程管理等多个环节,掌握这些细节有助于确保服务稳定运行,以下是关于Nginx在Linux下启动命令的详细说明,Nginx可执行文件位置Nginx的可执行文……

    2025-11-16
    0
  • 二代测序数据分析岗,需掌握哪些核心技能?

    二代测序数据分析招聘是当前生物信息学领域的重要人才需求方向,随着高通量测序技术的普及和成本的降低,二代测序数据在科研、临床、农业等领域的应用日益广泛,对专业数据分析人才的需求也持续增长,这类岗位要求候选人具备扎实的生物学、统计学和计算机科学基础知识,能够熟练运用各类生物信息学工具和编程语言,对测序数据进行处理……

    2025-11-16
    0
  • Oracle编译存储过程命令有哪些?

    在Oracle数据库中,存储过程是预编译的SQL语句集合,用于执行特定任务,编译存储过程是确保其语法正确、逻辑无误的关键步骤,通常通过PL/SQL块或命令行工具完成,以下是关于Oracle编译存储过程的详细说明及操作命令,编译存储过程的基本命令在Oracle中,编译存储过程最常用的命令是ALTER PROCED……

    2025-11-12
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注