cmake 文件结构
1. cmake 的作用是生成 makefile 文件,因为makefile 比较麻烦,那么写完cmake 然后用工具生成 makefile
2. 我理解的 一个 cmake文件对应一个模块, 有5个半 的部分组成,分别是
(1) 编译设置
(2)需要头文件路径
(3)需要的 C 文件
(4)需要的其他模块功能,cmake 的思路就是模块
(5)当前 cmake 的下一级文件夹里面的cmake,也就是子模块
3. 编译设置
set(target kernel) // 设置一个模块,target = kernel, kernel 就是这个模块
add_library(${target} STATIC) // 把这个模块编译成静态库
set_target_properties(${target} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${out_lib_dir}) // 设置模块的属性,属性是编译输出放的位置
target_compile_definitions(${target} PRIVATE OSI_LOG_TAG=LOG_TAG_KERNEL) // 不太清楚
4. 需要头文件路径,这个模块需要的所有头文件的路径
target_include_directories(${target} PRIVATE lwip/include)
5. 需要的C 文件
target_sources(${target} PRIVATE
src/netif_gprs.c
src/lwipports.c
src/lwip_data_event.c
)
6. 需要的其他模块
target_include_targets_if(CONFIG_NET_CTIOTSM_SUPPORT THEN ${target} PRIVATE ctiotsm)
7. 当前模块里面的子模块,同时下面的mupnp 也是当前文件的下一级文件,同时mupnp 也是一个单独的模块有自己的cmake 文件
add_subdirectory_if(CONFIG_MUPNP_LIB_SUPPORT THEN mupnp)