本项目使用CMake进行构建,可以轻松地在PC上进行模拟,或为嵌入式目标进行交叉编译。

1. 克隆仓库

首先,克隆主仓库及其所有子模块(submodule),这一点非常重要,因为LVGL等依赖库是通过子模块引入的。

1
2
git clone --recurse-submodules https://github.com/zhangwei43721/Smart_Home_System.git
cd Smart_Home_System

如果已经克隆但忘记了 --recurse-submodules,可以执行以下命令来拉取子模块:

1
git submodule update --init --recursive

2. 在Linux PC上模拟运行

这是一种无需硬件即可快速验证UI和业务逻辑的方法。

  1. 创建构建目录

    1
    2
    mkdir build
    cd build
  2. 运行CMake生成Makefile

    1
    cmake ..
  3. 编译项目

    1
    make -j8

    -j8 表示使用8个线程并行编译,可以加快速度。

  4. 运行可执行文件
    编译成功后,build 目录下会生成一个名为 Smart_Home 的可执行文件。

    1
    ./Smart_Home

    此时,您应该能看到一个SDL窗口弹窗,显示项目的LVGL界面。

3. 交叉编译 (嵌入式目标)

当您需要为ARM等嵌入式平台编译时,需要指定交叉编译工具链。

  1. 准备工具链文件:
    创建一个工具链文件(例如 arm-gcc.cmake),内容如下:

    1
    2
    3
    4
    set(CMAKE_SYSTEM_NAME Generic)
    set(CMAKE_C_COMPILER arm-none-eabi-gcc)
    set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
    # ... 其他工具链相关设置
  2. 运行CMake并指定工具链:
    build目录下,执行:

    1
    cmake .. -DCMAKE_TOOLCHAIN_FILE=../path/to/arm-gcc.cmake
  3. 编译:

    1
    make

    编译完成后,将生成适用于目标平台的二进制文件(如 .bin.elf),您可以通过烧录工具将其下载到硬件中运行。