CMake 一部分命令

一 下载

cmake

二 基本语法(指令)

指令是大小写无关的,参数和变量是大小写相关的。建议大写。CMake要求要求工程主目录和所有存放源代码子目录下都要编写CMakeLists.txt文件,注意大小(CM 大写,Lists中L要大写且不要落下s)。

ADD_EXECUTABLE
ADD_EXECUTABLE(hello main.c func.c)
使用main.c func.c生成可执行文件 hello

CMAKE_MINIMUM_REQUIRED
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)命令
规定cmake软件的最低版本2.6。这行命令是可选的,可以不写这句话,但在有些情况下,如果CMakeLists.txt文件中使用了一些高版本cmake特有的一些命令时,就需要加上这一行,提醒用户升级到该版本之后再执行cmake。

PROJECT(demo)
PROJECT(projectname [cxx] [c] [java])
可以指定工程采用的语言,选项分别表示:C++, C, java, 如不指定默认支持所有语言。
指定项目的名称,在生成VS项目下即指明了生成的.sln项目的文件名(解决方案名称)。项目最终编译生成的可执行文件不一定是这个项目名称,而是由另一条命令(add_executable)指定的。

ADD_SUBDIRECTORY
语法: ADD_SUBDIRECTORY(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
该命令告诉CMake去子目录中查看可用的CMakeLists.txt文件
指令用于向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置。 EXCLUDE_FROM_ALL 参数的含义是将这个目录从编译过程中排除。比如,工程的 example,可能就需要工程构建完成后,再进入 example 目录单独进行构建。在我们的项目中,我们添加了src目录到项目中,而把对应于src目录生成的中间文件和目标文件存放到bin目录下。

ADD_LIBRARY
语法:ADD_LIBRARY(libname [SHARED|STATIC]
告诉工程生成一个库文件,在libname 可以用SHARED 和STATIC 指定动态库或者静态库,默认静态库。

INCLUDE_DIRECTORIES
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/lib)
添加头文件搜索路径 PROJECT_SOURCE_DIR是工程名

AUX_SOURCE_DIRECTORY
AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SRC_LIST)
添加源文件至SRC_LIST

FIND_LIBRARY(GPUJPEG_LIBRARY NAMES gpujpeg REQUIRED ${CMAKE_CURRENT_LIST_DIR}/lib/Release)
查找第三方库,第一个是给他取得名字,第二个是说它叫什么名字,REQUIRED是找不到久报错停止,最后是查找路径,当然,查找到了,一定要用。

MESSAGE
MESSAGE(STATUS "The CMAKE_VERSION is C M A K E V E R S I O N " ) 打 印 , 可 以 用 来 调 试 引 用 变 量 内 容 需 要 用 {CMAKE_VERSION}") 打印,可以用来调试引用变量内容需要用 CMAKEVERSION"){变量名}格式,可以使用message命令查看变量具体内容

TARGET_LINK_LIBRARIES
TARGET_LINK_LIBRARIES(demo LIBNAME)
将用到的库链接到目标上,经我验证,生成静态库不需要,动态库和可执行程序都要链接。

SET
SET(normal “normalValue”)
可以理解位变量赋值,前面的是变量,用的使用**${变量}** 可以取出变量的值

三 小例子

CMAKE_MINIMUM_REQUIRED(VERSION 3.1.1)
#解决方案名称
PROJECT(ThreadPoolDll)
#添加头文件路径
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
#添加源文件
AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR} SRC_LIST)
#生成动态库
ADD_LIBRARY(DLL SHARED ${SRC_LIST})
#设置动态库存储路径
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值