CMake几个基本指令

参考资料:

http://www.360doc.com/content/16/0420/15/32619808_552310135.shtml
http://sewm.pku.edu.cn/src/paradise/reference/CMake%20Practice.pdf
http://blog.csdn.net/xocoder/article/details/8546907

指令推荐大写; 大小写不敏感;
变量使用${}, IF语句中直接使用变量,不需要${}

下面是一个例子:

PROJECT (HELLO)
SET(SRC_LIST main.c)
MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})

说明:

PROJECT(name) 

name工程名, 。这个指令隐式的定义了两个 cmake 变量:
<projectname>_BINARY_DIR以及<projectname>_SOURCE_DIR,这里就是name_BINARY_DIR ;
cmake 系统也帮助我们预定义了PROJECT_BINARY_DIRPROJECT_SOURCE_DIR变量,他们的值分别跟 HELLO_BINARY_DIRHELLO_SOURCE_DIR 一致。

SET 指令的语法, 用来设置变量:

SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])

MESSAGE用于cmake时输出消息; STATUS是输出前加上--

MESSAGE([SEND_ERROR | STATUS | FATAL_ERROR] "message to display"...)

输出可执行文件定义:

ADD_EXECUTABLE(hello ${SRC_LIST})

定义了这个工程会生成一个文件名为 hello 的可执行文件,相关的源文件是 SRC_LIST 中定义的源文件列表;

添加原文件路径:

AUX_SOURCE_DIRECTORY(. namevar)
AUT_SOURCE_DIRECTORY(ohterpath namevsr) #otherpath是源文件搜索路径
ADD_EXECUTABLE(hello ${namevsr})

头文件搜索路径:

如果有多个文件夹中包含有源文件, 可以使用下面的命令:

INCLUDE_DIRECTORIES([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...)

这条指令可以用来向工程添加多个特定的头文件搜索路径,路径之间用空格分割,如果路径中包含了空格,可以使用双引号将它括起来,默认的行为是追加到当前的头文件搜索路径的
后面,你可以通过两种方式来进行控制搜索路径添加的方式:
1. CMAKE_INCLUDE_DIRECTORIES_BEFORE,通过 SET 这个 cmake 变量为 on,可以
将添加的头文件搜索路径放在已有路径的前面;
2. 这里的AFTER|BEFORE 也可以控制;

添加共享库

LINK_DIRECTORIES 和 TARGET_LINK_LIBRARIES
LINK_DIRECTORIES 的全部语法是:

LINK_DIRECTORIES(directory1 directory2 ...)

这个指令非常简单,添加非标准的共享库搜索路径,比如,在工程内部同时存在共享库和可执行二进制,在编译时就需要指定一下这些共享库的路径。这个例子中我们没有用到这个指令。
TARGET_LINK_LIBRARIES 的全部语法是:

TARGET_LINK_LIBRARIES(target library1 <debug | optimized> library2 ...)

ADD_SUBDIRECTORY 指令

ADD_SUBDIRECTORY(source_dir [binary_dir [EXCLUDE_FROM_ALL])

这个指令用于向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存
放的位置。E

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值