CMake学习
1 | cmake_minimum_required(VERSION 3.10) |
cmake_minimum_required指令用于声明该脚本所需要的最低CMake版本。这里指定了版本为3.10,表示该脚本需要在CMake 3.10及以上版本的环境中执行。
如果使用多个cmake_minimum_required指令,只有第一个指令会起作用,后续的指令将被忽略。因此,只需在CMake脚本中使用一次cmake_minimum_required指令来声明最低版本即可。如果在同一个CMake脚本中出现了多个cmake_minimum_required指令,CMake会给出错误提示并停止执行。
1 | project(feature_phone LANGUAGES ASM C CXX) |
project指令用于定义一个CMake项目。这里定义的项目名为”feature_phone”,并指定了使用汇编语言(ASM)以及C和C++语言来编写该项目的代码。
buildall.bat中有
1 | m_tee gnumake -f Arbel.mak %MAKE_TV% |
而Arbel.mak中有
1 | INC_MAK_PROJECT = $(BUILD_ROOT)/tavor/Arbel/build/inc_project.mak |
这个会包含宏定义。
makefile的学习
1 | DS_FEAT_ENABLE :=$(DS_FEAT) |
代码是将变量 DS_FEAT 的值赋给变量 DS_FEAT_ENABLE。具体来说,它使用了 := 操作符,表示使用的是覆盖(赋值)而不是追加的方式。
= 和 := 的区别是延迟展开和即时展开的区别。
= 叫做 赋值操作符:延迟展开(Simply Expanded Variables):= 叫做 赋值操作符:即时展开(Simple Variables)
使用 = 进行赋值时,变量的值是“延迟展开”的。这意味着,当变量被引用时,其值将在使用时展开而不是在赋值时。这可能导致一些意外的行为,尤其是在变量的值在后续规则中发生变化的情况下。
1 | DS_FEAT = original_value |
1 | DS_FEAT = original_value |
1 | ifneq (,$(findstring PS_LW,${PMIC_RF_T})) |
上面的代码用于根据条件向变量添加值。它根据是否能在 ${PMIC_RF_T} 中找到子字符串 PS_LW,来决定是否添加 PS_LW 到 VARIANT_LIST 变量,并向 TARGET_DFLAGS 变量添加宏定义 -DPLATFORM_FOR_PS_LW。
使用
编译器用的mingw64
执行下面命令:
1 | 1. cmake -G "MinGW Makefiles" .. |
cmake -G "MinGW Makefiles" ..:该命令用于生成用于 MinGW 的 Makefile。这里的-G "MinGW Makefiles"指定了要使用的生成器为MinGW Makefiles,而..表示CMake将在当前目录的上一级目录中查找CMakeLists.txt文件。mingw32-make:该命令用于根据步骤 1 生成的 Makefile 来编译项目。它会根据 Makefile 中的规则和目标,执行相应的编译操作。