首先去官网下载源码包
然后输入以下命令
$tar -zxvf xx.tar.gz
$./bootstrap
$make
$make install
在其中可能会遇到一些问题,比如
Error when bootstrapping CMake:
Cannot find appropriate C compiler on this system.
Please specify one using environment variable CC.
See cmake_bootstrap.log for compilers attempted.
Log of errors: /usr/local/src/cmake-2.8.4/Bootstrap.cmk/cmake_bootstrap.log
这是缺少gcc,去安装gcc
sudo apt update
sudo apt install build-essential
如果再预先./bootstrap提示

就执行命令
sudo apt-get install libssl-dev
再次运行就成功了
CMake简单使用
首先自己新建一个比如bulid目录,以防搞混,然后在创建目录下创建两个文件,
├── CMakeLists.txt
└── main.c
内容如下:
CMakeLists.txt
PROJECT(HELLO)
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
ADD_EXECUTABLE(hello ${DIR_SRCS})
PROJECT()它是指定当前这个项目的名字,你可以随便写的没关系的。AUX_SOURCE_DIRECTORY()中的第一个参数是指定源文件所在文件夹(在本例子中是当前目录,就是一个点),第二个参数是把源文件夹所有源文件名存到DIR_SRCS这个变量中。ADD_EXECUTABLE()它指定的是把哪些源文件编译成目标文件。以及目标文件名叫啥。这这个例子中的目标文件名叫做hello你可以随便写的没关系的。但是后面那个源文件地址${DIR_SRCS}这个不能随便写,它的意思是读取DIR_SRCS这个变量的值(在本例子中这个变量值是源文件名)。
main.c
#include<stdio.h>
int main()
{
printf("hello world! my first cmake");
return 0;
}
编译
- 把命令行的工作目录切换到在当前有CMakeLists.txt的这个目录下,
- 然后输入
cmake ./,注意后面那是两个符号“点+斜杠”表示编译当前目录。你会发现你当前目录下多了很多文件。 - 然后输入
make产生目标可执行文件。然后你会发现当前文件夹下面多了一个可执行文件hello。你可以试试./hello运行这个可执行文件。


cmake工程化
把源代码放在src这个文件夹内,bin目录暂时为空到时候把编译后的文件全放到bin文件夹中。记得在当前目录和src目录下面两个目录都要创建CMakeLists.txt
├── bin
├── CMakeLists.txt
└── src
└── main.c
├── CMakeLists.txt
当然当前目录下的CMakeLists.txt内容也需要变化(src目录下的CMakeLists.txt内容为空):
PROJECT(HELLO)
ADD_SUBDIRECTORY(src)
AUX_SOURCE_DIRECTORY(./src DIR_SRCS)
ADD_EXECUTABLE(hello ${DIR_SRCS}
你会发现多了一行ADD_SUBDIRECTORY(src ),其中ADD_SUBDIRECTORY()的参数是源代码存放的文件夹。
然后我们执行编译命令:cmake .,然后你会发现bin这个文件夹里面多了很多内容。接下来我们只需要进入到bin这个文件夹执行make命令来生成可执行文件。
cmake使用头文件等外部依赖
├── bin
├── CMakeLists.txt
└── src
└── main.c
├── a.h
├── CMakeLists.txt
然后src/CMakeLists.txt这个文件此时需要增加内容了:
AUX_SOURCE_DIRECTORY(. LIB_FILES) # 这个表示获取当前src目录下所有文件名并存入LIB_FILES这个变量中
ADD_LIBRARY(LIBS ${LIB_FILES}) # 这个表示将${LIB_FILES}这些文件加入库中,然后并且复制一份到LIBS这个变量中
项目根目录下的CMakeLists.txt的文件内容也需要改动:
PROJECT(HELLO)
AUX_SOURCE_DIRECTORY(./src DIR_SRCS)
ADD_EXECUTABLE(hello ${DIR_SRCS})
TARGET_LINK_LIBRARIES(hello ${LIBS}) # 向可执行文件hello提供链接库LIBS是前面提到的变量
cmake编译生成中间代码,以及make编译生成目标可执行文件和前面的操作一样。都是回到项目根目录下:
输入:
$ cmake .
$ make
本文详细介绍CMake的安装步骤,包括解决常见错误的方法,如找不到C编译器的问题,并通过示例展示CMake的基本使用,如项目配置、源文件管理、编译执行等。

3068

被折叠的 条评论
为什么被折叠?



