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

目录结构
|-CMakeLists.txt
|-main.c
|-testFunc/
|-testFunc.c
|-testFunc.h
|-testFunc1/
|-testFunc1.c
|-testFunc1.h一、安装 CMake
我们需要在 Linux 系统中安装 CMake,以下是安装步骤:
1、更新包管理器
sudo apt update2、安装 CMake
sudo apt install cmake3、验证安装
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,运行该文件:

./main输出结果应为:
Hello World5、清理项目
如果需要重新生成目标文件,可以使用以下命令删除之前的编译文件:
make clean三、同一目录下多个源文件
当有多个源文件时,我们可以在CMakeLists.txt 文件中指定所有需要的源文件。
1、添加源文件
在main.c 所在目录下添加两个文件testFunc.c 和testFunc.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);
#endif2、修改 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 文件呢?

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<
