1.基本语法
# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 2.8 )
# 声明一个 cmake 工程
project( HelloSLAM )
# 设置编译模式
set( CMAKE_BUILD_TYPE "Debug" )
# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( helloSLAM helloSLAM.cpp )
# 静态库每次调用都会生成一个人副本,而共享库则只有一个副本
# 添加一个静态库 库名以".a"结尾 hello.a
add_library( hello libHelloSLAM.cpp )# 将libHelloSLAM.cpp编译成叫做"hello"的库
# 共享库 库名以".so"结尾 hello_shared.so
add_library( hello_shared SHARED libHelloSLAM.cpp )
add_executable( useHello useHello.cpp )
# 将库文件链接到可执行程序上
target_link_libraries( useHello hello_shared )
#---------------------------------------------
# 常用
# cmake_minimum_required()
# project()
# set()
# add_library()
# add_executable()
# target_link_libraries()
# find_package()
# find_library()
# link_libraries()
# include_directories()
#---------------------------------------------
2.cmake的使用
2.1编写源代码
# 文件名:useHello.cpp
#include "libHelloSLAM.h"
int main( int argc, char** argv )
{
printHello();
return 0;
}
2.2编写头文件
# 文件名:libHelloSLAM.h
#ifndef LIBHELLOSLAM_H_
#define LIBHELLOSLAM_H_
void printHello();
#endif
2.3添加到CMakeList.txt
add_executable( useHello useHello.cpp )
# 将库文件链接到可执行程序上
target_link_libraries( useHello hello_shared )
3.常用编译方式
3.1命令行编译
# 建造中间目录,编译好后可删去
mkdir build
cd build
cmake ..
make # 多核编译 make -j6
------
make install # 如有需要,使用该指令安装(sudo make install)
3.2对工程进行分析
cmake .