cmake基础入门教程

cmake是一个跨平台的编译(安装)工具,可以在linux下生成makefile,在Windows下生成project。方便代码的跨平台移植,在linux中避免了makefile的编写。
本教程为入门时笔记,随时更新。
1.语法规则
(1)cmake的指令大小写都可以使用,例如SET()可以写成set()
(2)变量有大小写之分,例如SRC_LISTsrc_list不同。
(3)变量使用方式,在取值时采用${SRC_LIST}取值,但是在IF语句中直接使用变量名。
(4)参数使用空格或;分隔。也可以使用括号()扩起。
2.外部构建
将构建过程中的中间临时文件与源代码分离,方式:
在源代码文件夹下单独创建一个放置生成工程的空文件夹,例如build,在build中运行cmake ..命令即可。其中“..”表示父目录。
3.目录变量
该变量为定义好的变量,不需要再定义。
变量PROJECT_BINARY_DIR表示生成的工程文件的地址。
变量PROJECT_SOURCE_DIR表示源文件的地址。
可使用如下代码打印:

MESSAGE(STATUS "This is BINARY dir " ${PROJECT_BINARY_DIR}) 
MESSAGE(STATUS "This is SOURCE dir "${PROJECT_SOURCE_DIR})

4.定义变量

set(SRC_LIST idealrobot.hpp robot.hpp robot.cpp gamepad.hpp
    main.cpp)

将变量SRC_LIST定义为后面所示的文件。
5.注释
命令行前加#
6.指定cmake版本

cmake_minimum_required(VERSION 2.4)

7.project指定项目名称

project(haha)

如上项目名称为haha。
8.设置变量

set(SRC_LIST idealrobot.hpp robot.hpp robot.cpp gamepad.hpp
    main.cpp)

9.添加include头文件的搜索路径

include_directories(./include)

上式确定头文件目录为CMakeLists所在文件夹下的include文件夹。
10.添加动态链接库或静态链接库的搜索路径

link_directories(/usr/lib)

添加的路径为/usr/lib文件夹。
11.生成工程

add_executable(telerobot ${SRC_LIST})

SRC_LIST变量所代表的文件进行编译,生成工程。
12.指令链接的动态库或静态库

target_link_libraries(telerobot libAria.so pthread)

只能链接该指令之前link_directories()路径中的库。
13.编译选项设置

target_compile_options(telerobot PRIVATE -std=c++11) 

f必须在目标工程已经存在的情况下使用,即add_executable()add_library()之后。

14.简单模板

cmake_minimum_required(VERSION 2.4)
project(telerobot)

set(SRC_LIST idealrobot.hpp robot.hpp robot.cpp gamepad.hpp
    main.cpp)

SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb ")
SET(CMAKE_CXX_FLAGS_RELEASE "${ENV{CXXFLAGS} -O3 -Wall")


include_directories(./include)
link_directories(/usr/lib)



MESSAGE(STATUS "This is BINARY dir " ${PROJECT_BINARY_DIR}) 
MESSAGE(STATUS "This is SOURCE dir "${PROJECT_SOURCE_DIR}) 


add_executable(telerobot ${SRC_LIST})

target_link_libraries(telerobot libAria.so pthread)
target_compile_options(telerobot PRIVATE -std=c++11) 


set(CMAKE_CONFIGURATION_TYPES "Release")

WALDM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值