从2015年5月开始,代码大部分是用在windows下,当需要linux、android、ios等平台下时,需要写繁琐的Makefile文件,对于不是很熟悉Makefile语法格式的人,写Makefile文件是很费力的。从那时开始,决定采用一个跨平台的工具来构建代码,减少多平台工作需要所增加的工作量。经过比较感觉cmake这个开源工具非常满足我们的需要,从而开始了cmake的应用。
工欲善其事必先利其器,cmake 就是我们构建跨平台工程的有效利器,其可以很大成程度上减轻我们代码移植的工作量。对于程序员来接触一个新东西的时候,往往首先需要了解它的语法,而cmake的语法非常简单,可以从其官网下载它的语法说明和简单的例程,我想任何一个东西的学习其最好方式就是实践。对cmake的语法及使用有了初步的了解后,可以通过构建自己的跨平台工程来逐步熟悉cmake的使用。
下面记录下在使用cmake 过程中自己所遇到的一些问题,方便以后自己查阅。
1、目录的相对关系
cmake 用两种编译方式即in source编译 和out of source编译,通常我选择out of source编译
即单独建立一个文件加存放工程文件和源文件分开。文件的目录可以以PROJECT_SOURCE_DIR 目录为基础,PROJECT_SOURCE_DIR为顶层cmake文件所在的目录,其他文件可以根据PROJECT_SOURCE_DIR的相对目录进行设定和查找。
2、平台的判断
有windows平台、linux平台、android平台怎么区分呢,cmake中有变量来识别这些平台。例如可以通过如下方式判断
if(WIN32 AND NOT MINGW)
message("WIN32 编译设置")
elseif(WIN32 AND MINGW)
message("MINGW 编译设置")
elseif(UNIX AND NOT ANDROID)
message("UNIX 编译设置")
elseif(ANDROID)
message("ANDROID 编译设置")
endif()
从2015年5月开始,代码大部分是用在windows下,当需要linux、and