安装 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变量: