Android Studio新版使用了CMakeLists.txt来管理c/cpp文件,现在就不用写Android.mk来进行编译了。事实感觉cmake的语法更简洁易用,或许这也是谷歌采用的原因之一。
这里简单贴一些用法,复杂用法请参考官方文档https://cmake.org/cmake/help/v3.10/
语法
“#”注释
变量:使用set命令显式定义及赋值,在非if语句中,使用${}引用,if中直接使用变量名引用;后续的set命令会清理变量原来的值;
command (args …) #命令不分大小写,参数使用空格分隔,使用双引号引起参数中空格
set(var a;b;c) <=> set(var a b c) #定义变量var并赋值为a;b;c这样一个string list
Add_executable(${var}) <=> Add_executable(a b c)
#变量使用${xxx}引用条件语句:
if(var) #var 非empty 0 N No OFF FALSE… #非运算使用NOT
…
else()/elseif() … endif(var)
- 循环语句
Set(VAR a b c)
Foreach(f ${VAR}) …Endforeach(f)
- 循环语句
WHILE() … ENDWHILE()
内部变量
CMAKE_C_COMPILER:指定C编译器
CMAKE_CXX_COMPILER:
CMAKE_C_FLAGS:编译C文件时的选项,如-g;也可以通过add_definitions添加编译选项
EXECUTABLE_OUTPUT_PATH:可执行文件的存放路径
LIBRARY_OUTPUT_PATH:库文件路径
CMAKE_BUILD_TYPE::build 类型(Debug, Release, …),CMAKE_BUILD_TYPE=Debug
BUILD_SHARED_LIBS:Switch between shared and static libraries
命令
project (HELLO) #指定项目名称,生成的VC项目的名称;
使用${HELLO_SOURCE_DIR}表示项目根目录
include_directories:指定头文件的