1、概论
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt
2、使用
2.1 可执行文件
set(SRC_LIST first.cpp):设置变量
add_executable(first ${SRC_LIST}):设置编译成可执行文件,文件名字和依赖的源文件
cmake中所有与路径有关的最好用全路径(有些使用相对路径有问题)
2.2 动态库
生成动态库
add_library(third SHARED main.cpp):设置编译动态库,动态库名字(实际库名lib+这个名字+.so)和依赖源文件
SHARED:动态库
STATIC:静态库,已经不用了吧?
导入动态库
add_library(forth SHARED IMPORTED)
set_target_properties(forth PROPERTIES IMPORTED_LOCATION ${MY_LIBS}/libforth.so)首先指定库的名字,库的类型,导入;然后指出动态库的库存放位置
还有另外一种导入方法:
link_directories(${CMAKE_SOURCE_DIR}/libs):指定动态链接库的位置
2.3 其它常用方法
add_subdirectory(src build):设置源文件路径、编译结果文件路径
include_directories(${CMAKE_SOURCE_DIR}/src/include):设置自己的头文件路径
target_link_libraries(five forth):链接动态库
3、常规编译
cmake .
make
4、特定平台编译
特定平台编译,其实我就想说的是android ndk项目需要那些库;
其实这涉及到一些名词:交叉编译,编译工具链;简单来说,
交叉编译:编译平台,和使用平台不一致;由于使用平台可使用空间的限制,导致自身平台不能编译,这就需要交叉编译
编译工具链:在编译平台生成特定平台的一些工具;与特定平台有关
具体编译情况分析:见官网android编译
网友评论