(1)使用CMakeList.txt编译一个程序的基本步骤:
在代码cpp文件以及CmakeLists.txt文件目录下,执行以下指令:
mkdir build
cd build
cmake ..
make
(2)CMakeLists.txt文件的一般格式
举例存在以下helloworld.cpp文件:
#include<iostream>
using namespace std;
int main(int argc,char**argv)
{
cout<<"Hello world !"<<endl;
return 0;
}
CMakeLists.txt文件:
cmake_minimum_required(VERSION 2.8.3) #非必须的
project(helloworld)
set(SRC_LIST helloworld.cpp)
message(STATUS "This is BINARY dir"${helloworld_BINARY_DIR})
add_executable(helloworld ${SRC_LIST})
(3)CMakeLists.txt中的变量与常用环境变量
常用的一部分变量:
<projectname>_BINARY_DIR
PROJECT_BINARY_DIR(当前工程)
CMAKE_BINARY_DIR
PROJECT_BINARY_DIR
这三个变量指代的内容是一致的 : 项目编译发生的目录
<projectname>_SOURCE_DIR
PROJECT_SOURCE_DIR(当前工程)
CMAKE_SOURCE_DIR
PROJECT_SOURCE_NAME
这三个变量指代的内容是一致的 :CMakeLists.txt所在目录,工程根目录,即项目目录
CMAKE_CURRENT_SOURCE_DIR :当前处理的CMakeLists.txt所在的目录
CMAKE_CURRRENT_BINARY_DIR :target编译目录
在ROS的catkin中还有一些特殊的变量:
例如:catkin_INCLUDE_DIRS 指的是ROS工程目录中include目录
变量的设置:
set(SOURCES
${CMAKE_CURRENT_SOURCE_DIR}/src/algorithm.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/node2d.cpp) :使用set指令创建一个变量,后边是变量值
变量的引用:${SOURCE}
系统环境变量的引用:$ENV{ NAME }