引言
在进行跨平台的时候,CMake无疑是一个好的选择,在“windows调试,linux运行”是高效的开发方式。
下面在centos环境下安装方式
安装CMake
安装之前,请安装GCC
centos安装cmake
- yum -y install gcc gcc-c++ make wget 安装必须的环境,如已安装,跳过此步骤
- wget -c http://www.cmake.org/files/v3.7/cmake-3.7.0.tar.gz下载cmake源码包
- tar -zxvf cmake-3.12.0-rc1.tar.gz && cd cmake-3.12.0-rc1解压并且进入目录
- ./bootstrap运行当前目录下的一个文件
- gmake && gmake install运行并安装
- cmake --version查看cmake版本号,阅读install_manifest.txt查看具体都安装了什么
cmake 是什么
CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。
CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库(so(shared object))
通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程
ps : 其实cmake 的本质不是编译项目,而是打包工程,你想想你cmake . 后是不是还要 make 一下
make 才是编译
windows 上也是如此 你打包了一个 sln 解决方案,最后是不是还是要用vs的编译器来生成.exe
make与gmake
gmake是GNU Make的缩写
linux系统环境下的make就是gmake,之所以有gamke,是因为在别的平台上,make一般被占用。
- gmake 调用的c编译器是gcc,c++编译器g++
- make 调用的c编译器是cc,c++编译器CC
ps : 这快有个编译小技巧,
gmake -j n
n 是指开几个进程进行编译,充分利用cpu,这个命令编译时速度非常快
Linux centos 下cmake编译项目
cmake 指向CMakeLists.txt所在的目录
cmake后会生成很多编译的中间文件以及makefile文件,所以一般建议新建一个新的目录,专门用来编译
mkdir build
cd build
cmake ..
make
├── build
│ ├── CMakeCache.txt
│ ├── CMakeFiles
│ │ ├── 3.2.2
│ │ │ ├── CMakeCCompiler.cmake
│ │ │ ├── CMakeCXXCompiler.cmake
│ │ │ ├── CMakeDetermineCompilerABI_C.bin
│ │ │ ├── CMakeDetermineCompilerABI_CXX.bin
│ │ │ ├── CMakeSystem.cmake
│ │ │ ├── CompilerIdC
│ │ │ │ ├── a.out
│ │ │ │ └── CMakeCCompilerId.c
│ │ │ └── CompilerIdCXX
│ │ │ ├── a.out
│ │ │ └── CMakeCXXCompilerId.cpp
│ │ ├── cmake.check_cache
│ │ ├── CMakeDirectoryInformation.cmake
│ │ ├── CMakeOutput.log
│ │ ├── CMakeTmp
│ │ ├── feature_tests.bin
│ │ ├── feature_tests.c
│ │ ├── feature_tests.cxx
│ │ ├── Makefile2
│ │ ├── Makefile.cmake
│ │ ├── progress.marks
│ │ ├── TargetDirectories.txt
│ │ └── test_sqrt.dir
│ │ ├── build.make
│ │ ├── C.includecache
│ │ ├── cmake_clean.cmake
│ │ ├── DependInfo.cmake
│ │ ├── depend.internal
│ │ ├── depend.make
│ │ ├── flags.make
│ │ ├── link.txt
│ │ ├── progress.make
│ │ └── src
│ │ ├── b.c.o
│ │ └── main.c.o
│ ├── cmake_install.cmake
│ ├── Makefile
│ └── test_sqrt
├── CMakeLists.txt
├── include
│ └── b.h
└── src
├── b.c
└── main.c