cmake所做的事其实就是告诉编译器如何去编译链接源代码。你也许想问不是有makefile吗,为什么还要它?这里就牵涉到跨平台问题。而且其语法也简单。
- 卸载已经安装的旧版的CMake[非必需]
apt-get autoremove cmake
- 文件下载解压:
wget https://cmake.org/files/v3.20/cmake-3.20.0-linux-x86_64.tar.gz
- 解压:
tar zxvf cmake-3.20.0-linux-x86_64.tar.gz
- 查看解压后目录:
tree -L 2 cmake-3.20.0-linux-x86_64
cmake-3.20.0-linux-x86_64
├── bin
│ ├── ccmake
│ ├── cmake
│ ├── cmake-gui
│ ├── cpack
│ └── ctest
├── doc
│ └── cmake
├── man
│ ├── man1
│ └── man7
└── share
├── aclocal
├── applications
├── bash-completion
├── cmake-3.20
├── emacs
├── icons
├── mime
└── vim
15 directories, 5 files
bin下面有各种cmake家族的产品程序。
- 创建软链接
注: 文件路径是可以指定的, 一般选择在/opt 或 /usr 路径下, 这里选择/opt
sudo mv cmake-3.20.0-linux-x86_64 /opt/cmake-3.20.0
sudo ln -sf /opt/cmake-3.20.0/bin/* /usr/bin/
- 然后执行命令检查一下:
>>>cmake --version
cmake version 3.20.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).
>>>cmake-gui
OK。现在在Ubuntu 18.04上的cmake本安装成功。编写简单的cmake
- 使用cmake首先得有个CMakeList.txt文件,你需要把配置信息写在该文件中,然后通过cmake去处理该文件。将设有下面一个main.cpp文件
//main.cpp文件
#include<iostream>
using namespace std;
int main(){
cout<<"hello world!"<<endl;
return 0;
}
这时候我们就可以写个如下的CMakeList.txt文件
#cmake最小需要版本
cmake_minimum_required(VERSION 2.8)
#项目名字
project(HELLOWORLD)
#包含原程序,即把给定目录下的源程序复制给变量DIR_SRC
aux_source_directory(DIR_SRC ./)
#生成程序
add_executable(helloworld ${DIR_SRC})
然后执行如下命令
$mkdir build
$cd build
$cmake ..
$make
$./helloworld
这样就编译好程序并运行。
添加静态库或者动态库
而假设我们程序用到了在/usr/lib下的一个静态库libmy.a,那就需要添加如下两个命令
#库所在位置
link_directories(/usr/lib)
#程序编译时候链接库
target_link_libraries(helloworld my)