在星闪liteos中创建一个helloworld工程,以在wsl-ubuntu-fbbws63环境下创建为例
在 application/samples 中创建一个 叫demo 的文件夹作为工作区


在该工作区添加用户自定义代码 demo.c、demo.h,同时创建一个空白 CMakeLists.txt 文件作为工程。(也可以创建”src”文件夹存放代码源文件 ,创建”inc”文件夹存放头文件和CMakeLists.txt 文件以便让代码结构清晰)

使用CMake编译需要在各个文件层级创建CMakeLists.txt 文件,以便于创建链接。因此首先在 application/samples/demo/CMkakeLists.txt 文件中为组件模板添加源码文件以及源码头文件路径:

逐部分解释以上代码
set(SOURCES_LIST
${CMAKE_CURRENT_SOURCE_DIR}/demo.c
)
创建了一个名为 SOURCES_LIST 的变量,包含了当前同级目录下的 demo.c 文件,这种写法将源文件列表先存储在一个中间变量中(set:CMake 的变量设置命令,${CMAKE_CURRENT_SOURCE_DIR}:${变量名} 表示引用变量的值,
CMAKE_CURRENT_SOURCE_DIR是CMake 内置变量,表示当前 CMakeLists.txt 文件所在的目录的完整路径,后加/demo.c表示加入编译的是同级目录下的demo.c)
在SOURCES_LIST中添加.c文件,多个.c文件直接换行加在后面即可。
例:set(SOURCES_LIST
${CMAKE_CURRENT_SOURCE_DIR}/demo.c
${CMAKE_CURRENT_SOURCE_DIR}/utils.c
${CMAKE_CURRENT_SOURCE_DIR}/network.c
)
set(PUBLIC_HEADER_LIST
${CMAKE_CURRENT_SOURCE_DIR}
)
创建了一个名为 PUBLIC_HEADER_LIST 的变量,包含了当前目录的路径(而不是具体的头文件)。用于指定头文件的搜索路径。
在PUBLIC_HEADER_LIST中添加.h路径,多个路径直接换行加在后面即可。(路径写到h文件所在文件夹,而不是精确到h文件)
set(SOURCES "${SOURCES_LIST}" PARENT_SCOPE)
set(PUBLIC_HEADER "${PUBLIC_HEADER_LIST}" PARENT_SCOPE)
将 SOURCES_LIST 的值赋给 SOURCES 并传递给父目录,将 PUBLIC_HEADER_LIST 的值赋给 PUBLIC_HEADER 并传递给父目录,使用 PARENT_SCOPE 确保父目录的 CMakeLists.txt 可以访问这些变量。
在demo.c、demo.h中添加自己的业务代码,这里以在demo.c中添加一个创建任务,并在任务中打印消息为例,app_run函数为应用程序的入口函数。

将demo组件的内的顶层 CMakeLists 添加到其上一层 CMakeLists 下,使构建系统能够执行到 demo 组件的 CMake。

另外也可通过例如CONFIG_ENABLE_MY_SAMPLE宏控制是否编译demo代码。例如以下代码,告诉CMake系统在什么条件(定义CONFIG_ENABLE_MY_DEMO)下编译hello_world目录,CONFIG_ENABLE_MY_DEMO 是Kconfig生成的宏,add_subdirectory_if_exist 确保demo目录存在时才添加

如果这样写这个功能,需要在samples/Kconfig中添加以下代码

在menuconfig中显示配置选项,depends on SAMPLE_ ENABLE确保先启用sample示例,default n 默认不启用,用户需要手动选择生成 CONFIG_MY_DEMO 宏供CMake使用
在/fbb_ws63/src# 中输入./build.py menuconfig ws63-liteos-app,打开配置界面,选中 Enable the Sample of demo并保存即可编译demo工程


被折叠的 条评论
为什么被折叠?



