Cmake Practice 总结

安装 cmake

参考链接: https://www.cnblogs.com/6b7b5fc3/p/12715954.html

安装命令

sudo apt install cmake

初试 cmake

准备工作

建立一个 cmake_practice 目录

mkdir -p ~/cmake_practice

然后在 cmake_practice 建立第一个练习目录 t1

cd ~/cmake_practice
mkdir t1
cd t1

在 t1 目录建立 main.c 和 CMakeLists.txt(注意文件名大小写):

main.c 文件内容:

//main.c
#include <stdio.h>
int main()
{
printf(“Hello World from t1 Main!\n”);
return 0;
}

CmakeLists.txt 文件内容:

project(HELLO)
set(SRC_LIST main.c)
message(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})
message(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})
add_executable(hello SRC_LIST)

开始构建

所有的文件创建完成后,t1 目录中应该存在 main.c 和 CMakeLists.txt 两个文件.

接下来我们来构建这个工程,在这个目录运行
cmake . (注意命令后面的点号,代表本目录)。

再让我们看一下目录中的内容:
你会发现,系统自动生成了:
CMakeFiles, CMakeCache.txt, cmake_install.cmake 等文件,并且生成了Makefile. 现在不需要理会这些文件的作用,以后你也可以不去理会。最关键的是,它自动生成了Makefile.

然后进行工程的实际构建,在这个目录输入 make 命令. 如果你需要看到 make 构建的详细过程,可以使用 make VERBOSE=1 命令来进行构建。

这时候,我们需要的目标文件 hello 已经构建完成,位于当前目录,尝试运行一下:
./hello

得到输出:
Hello World from Main

简单的解释

我们来重新看一下 CMakeLists.txt,这个文件是 cmake 的构建定义文件,文件名是大小写相关的,如果工程存在多个目录,需要确保每个要管理的目录都存在一个CMakeLists.txt.

PROJECT 指令的语法是:
project(<projectname> [CXX] [C] [Java])
你可以用这个指令定义工程名称,并可指定工程支持的语言,支持的语言列表是可以忽略的,默认情况表示支持所有语言。这个指令隐式的定义了两个cmake变量:_BINARY_DIR 以及_SOURCE_DIR,这里就是HELLO_BINARY_DIR和HELLO_SOURCE_DIR(所以CMakeLists.txt中两个message指令可以直接使用了这两个变量),因为采用的是内部编译,两个变量目前指的都是工程所在路径/home/xiao/cmake_practice/t1/,后面我们会讲到外部编译,两者所指代的内容会有所不同。

Cmake Practice 总结

上一篇:使用Docker快速搭建ZooKeeper集群


下一篇:IDEA如何打断点调试