前言
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)
假设有一个项目是使用了cmake的语法进行编写
在linux使用cmake将会生成makefile文件
在window使用cmake将会生成vs工程文件
windows上使用CMake
所以说同一份代码,可以运行在不同的平台而产生相同的结果,这就是cmake的魅力了
Linux平台
普通用法
cmake ..
make
make install
gcc、g++、make的区别
参考Linux下gcc/g++、make和cmake的区别
补充:make是linux的一条命令
我们知道编译和链接阶段是靠g++和gcc编辑器来完成,这两个编译阶段是相同的,但是链接阶段g++默认链接c++库,所以一般情况下用gcc编译c文件,而g++编译cpp文件。
但是如果编译和链接的阶段如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译
make install
make install 命令就是将可执行文件、第三方依赖包和文档拷贝到设置的路径
mkdir testCmake
vim main.c
vim CMakeLists.txt
###main.c中的内容
#include<stdio.h>
int main()
{
printf("Hello World from t1 Main!\n");
return 0;
}
###CMakeLists.txt中的内容
cmake_minimum_required(VERSION 2.8.9)
PROJECT(HELLO)
add_executable(helloMain main.c)
执行下面命令
cmake .
make
./helloMain
输出结果:
Hello World from t1 Main!
假设不在当前目录下执行./helloMain,会报下面的错
现在改变一下CMakeLists.txt中的内容
cmake_minimum_required(VERSION 2.8.9)
PROJECT(HELLO)
add_executable(helloMain main.c)
install(TARGETS helloMain
RUNTIME DESTINATION bin)
cmake .
make
###将helloMain拷贝到了/usr/local/bin/下
sudo make install
在任意位置输入helloMain都不会报错而且运行结果相同
上面是被写固定的做法,还有一种做法。比如在安装DCMTK时
ccmake …
BUILD_SHARED_LIBS =ON
#安装的位置
CMAKE_INSTALL_PREFIX =/home/jack/Music/Local
make
make install
结果
在Local文件夹下面多出了bin etc include lib share等目录