CMake 即cross make,即交叉编译工具。主要依据CMakeList.txt这个文件。
每一个工程都应该包括一个CMakeList.txt,名字都不能错。
怎么编写CMakeList.txt,其实实现目标跟qt的pro文件是一样的。但Cmake可能使用的更广泛,可以使用所有编译器。
需要自己下载一个cmake工具。是一个类似于终端的工具。下面的配置好后执行:
cmake path_to_source
当然也可以指定编译器:
cmake -G ”visio studio 2013“ path_to_source
1、cmake 最小版本,cmake小于这个版本可能就编译不了了
cmake_minimum_required(VERSION 2.8.0)
2、 设置工程名称
set(PROJECT Usb) //工程名为Usb
set的功能其实很简单,就是把后面的添加到前面的变量集合里面。后面还会用到。
3、路径设置,下面这几行可以让路径成为相对路径,这样把代码随便拷都可以了
#工程文件中使用相对路径
SET(CMAKE_SUPPRESS_REGENERATION 1)
SET(CMAKE_USE_RELATIVE_PATHS ON)
#定义工程的顶级路径
SET(PROJDIR ${CMAKE_CURRENT_SOURCE_DIR})
#定义源文件目录
SET(SRCDIR ${PROJDIR})
set大写跟小写一样,其他的也是。
#Jenkins integration section end
4、必须增加的
project (${PROJECT}) //这里的 ${PROJECT} 等效于 Usb,因为第2条set了。
5、设置编译器
下面是设置Android的编译器,其中,COMPILIER_PATH 是在前面自己定义的ndk路径。比如 set(COMPILIER_PATH "/home/ndk")
SET(CMAKE_CXX_COMPILER "${COMPILER_PATH}/bin/arm-linux-androideabi-g++")
SET(CMAKE_C_COMPILER "${COMPILER_PATH}/bin/arm-linux-androideabi-gcc")
6、源文件
set(USB_SOURCES
maic.c
abc.cpp
)
7、 头文件
include_directories(./
./include
)
8、宏定义
比较增加ANDROID 的宏定义
add_definitions(-DANDROID)
9、子工程
add_subdirectory(./usb)//usb这个目录里应该也有CMakeList.txt
10、依赖库
target_link_libraries(工程名 库名) //库名可以多个,不需要加引号
11、编译目标
add_executable(工程名 $(USB_SOURCE))
USB_SOURCE 就是前面的源文件集合
第10条一般放到后面去。是先编译成执行文件,再链接。
如果编译成库
add_library(工程名 $(USB_SOURCE)
动态库
add_library(工程名 SHARED $(USB_SOURCE)