文章目录
一、安装cmake
1)卸载旧版本cmake
apt-get autoremove cmake
2)文件下载解压:
https://cmake.org/files/v3.9/cmake-3.9.1-Linux-x86_64.tar.gz
tar zxvf cmake-3.9.1-Linux-x86_64.tar.gz
3)查看目录
tree -L 2 cmake-3.9.1-Linux-x86_64
2 cmake-3.9.1-Linux-x86_64
3 ├── bin
4 │ ├── ccmake
5 │ ├── cmake
6 │ ├── cmake-gui
7 │ ├── cpack
8 │ └── ctest
9 ├── doc
10 │ └── cmake
11 ├── man
12 │ ├── man1
13 │ └── man7
14 └── share
15 ├── aclocal
16 ├── applications
17 ├── cmake-3.9
18 ├── icons
19 └── mime
20 12 directories, 5 files
4)创建软链接
注: 文件路径是可以指定的, 一般选择在 /opt 或 /usr 路径下, 这里选择 /opt
1 mv cmake-3.9.1-Linux-x86_64 /opt/cmake-3.9.1
2 ln -sf /opt/cmake-3.9.1/bin/* /usr/bin/
二、项目
1)单个文件目录实现
(1)基本工程
1 # 单个目录实现
2 # CMake 最低版本号要求
3 cmake_minimum_required (VERSION 2.8)
#指定工程名字,和二进制名字是可以不一样的,可以生成多个执行文件
PROJECT(0VOICE)
4 # 手动加填加文件
5 SET(SRC_LIST main.c)
SET(SRC_LIST2 main2.c)
6 MESSAGE(STATUS "THIS IS BINARY DIR " ${PROJECT_BINARY_DIR})
7 MESSAGE(STATUS "THIS IS SOURCE DIR " ${PROJECT_SOURCE_DIR})
8 ADD_EXECUTABLE(0voice ${SRC_LIST}) //执行文件叫0voice
ADD_EXECUTABLE(0voice2 ${SRC_LIST2})
(2)目录展现
cmakeLists.txt与main.c在同一目录
(3)代码
main.c
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("0voice2 CMake!!!\n");
return 0;
}
main2.c
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("0voice CMake!!!\n");
return 0;
}
(4)指令
cmake . //.的位置表示的是cmakelists.txt的位置,配置好
make //编译
./执行文件 //执行
2)改进工程结构
(1)基本工程
- 指定安装目录
- 主目录cmake
# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
PROJECT(0VOICE)
# 添加子目录
ADD_SUBDIRECTORY(src)
#INSTALL(FILES COPYRIGHT README DESTINATION share/doc/cmake/0voice)
# 安装doc到 share/doc/cmake/0voice目录
# 默认/usr/local/
#指定自定义目录,比如 cmake -DCMAKE_INSTALL_PREFIX=/tmp/usr ..
INSTALL(DIRECTORY doc/ DESTINATION share/doc/cmake/0voice)
- src目录的cmake
# 单个目录实现
# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 工程
# PROJECT(0VOICE)
# 手动加入文件
SET(SRC_LIST main.c)
MESSAGE(STATUS "THIS IS BINARY DIR " ${PROJECT_BINARY_DIR})
MESSAGE(STATUS "THIS IS SOURCE DIR " ${PROJECT_SOURCE_DIR})
ADD_EXECUTABLE(youzi ${SRC_LIST})
# 将执行文件安装到bin目录
# 默认/usr/local/
#指定自定义目录,比如 cmake -DCMAKE_INSTALL_PREFIX=/tmp/usr ..
INSTALL(TARGETS youzi RUNTIME DESTINATION bin)
(2)目录展现
1 .
2 ├── build
3 ├── CMakeLists.txt
4 ├── doc
5 │ ├── darren.txt
6 │ └── README.MD
7 └── src
8 ├── CMakeLists.txt
9 └── main.c
(3)代码
main.c
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("0voice CMake!!!\n");
return 0;
}
(4)指令
cmake -DCMAKE_INSTALL_PREFIX=/tmp/usr ..
make install
cd xxx
./执行文件