CMakeLists常用方法

我们在编译一个C/C++项目时有时候是需要我们阅读编译脚本来确定编译时的参数。CMakeLists.txt是比较常见的编译脚本,这里简单介绍几个常用的函数。

cmake_minimum_required

设置cmake的最小版本,位于CMakeList.txt的第一行,如果本机的CMake版本低于这个,则会报错,不进行编译,通常写法是:

cmake_minimum_required(VERSION 3.4.1)

VERSION 是必须的,后面为要求的CMake最低版本

set

赋值操作,用法如下:

set(SOURCE_DIR /src/main/cpp)

/src/main/cpp 赋值给 SOURCE_DIR 后面使用的时候可以通过 ${SOURCE_DIR} 的方式使用

#

# 表示注释

message

可以在编译时候向控制台输出信息,相当于log

#  会在控制台输出 SOURCE_DIR
message(SOURCE_DIR)

# 会在控制台输出 /src/main/cpp
message(${SOURCE_DIR})

include_directories

接收一个文件夹路径,将该文件夹中的头文件引入

# 引入了opencv的头文件
include_directories(/xxx/xxx/opencv/include)

link_directories

接收一个文件夹路径,将该文件夹中的库文件引入
include_directories相对,这个引入的是库文件

# 引入了opencv的库文件
include_directories(/xxx/xxx/opencv/lib)

add_library

编译一个库

add_library(	
	# 所要生成库及目标库的名字
	hululu_test
	# 声明编译的库为静态库(STATIC)还是共享库(SHARED)
	SHARED
	# 以下为依赖的源码
	xxx.c
	xxy.cpp
	 ...
)

target_link_libraries

声明目标库编译依赖的其他库

target_link_libraries(
	# 目标库名称
	hululu_test
	# 以下为依赖的其他库
	opencv
	android
	log
	z
)

get_filename_component

将可以做文件路径转换

# 获取CMakeList.txt同级的gen文件的绝对路径,并赋值给GEN_PATH
get_filename_component(GEN_PATH gens REALPATH)

function

定义一个函数

# 顶一个一个函数名为test的函数,接收两个参数
function(test var1, var2)
	...
# 函数定义结束标识
endfunction()

你可能感兴趣的:(Android,CMakeList.txt,NDK,add_library,交叉编译,编译脚本)