# intewell_app_cmake **Repository Path**: blackcc/intewell_app_cmake ## Basic Information - **Project Name**: intewell_app_cmake - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-11 - **Last Updated**: 2025-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # t2 项目构建指南 本仓库通过 CMake 驱动 Intewell RTCore 交叉工具链,生成 `libt2.a`、`t2.elf` 与 `t2.bin` 等产物。以下步骤帮助你在 Windows 环境完成一次完整的交叉编译。 ## 1. 环境准备 1. 安装 Intewell Developer(默认路径:`C:/Intewell_Developer_V2.2.0_release`)。 2. 建议直接启动 Intewell 提供的 *Intewell Developer Terminal* 或 MSYS Shell;若使用 PowerShell,需要先把工具依赖加入 `PATH`: ```powershell $env:PATH = "C:/Intewell_Developer_V2.2.0_release/gnuwin/msys64/usr/bin;C:/Intewell_Developer_V2.2.0_release/host/gnu/gcc-9.3.0/arm64/bin;$env:PATH" ``` 没有这一步会导致 `aarch64-intewell-elf-ar.exe` / `ranlib.exe` 报 “Unable to load DLL”。 ```powershell Get-Command make ``` 运行上面的命令可确认 `make.exe` 是否已在 PATH 中。 ## 2. 配置工程 在仓库根目录执行: ```powershell cmake -G "Unix Makefiles" -S . -B build-debug "-DCMAKE_TOOLCHAIN_FILE=${PWD}/cmake/intewell-aarch64-toolchain.cmake" ``` - 默认假设 SDK 位于 `C:/Intewell_Developer_V2.2.0_release`。若路径不同,可额外传入 `-DINTEWELL_SDK_ROOT="<你的安装路径>"`。 - 脚本会自动选择 `Debug/catlinkcmds` 作为链接脚本;若想固定 `_linkcmds`,可在命令中追加 `-DT2_USE_CATLINKCMDS=OFF`。 - PowerShell 会对未加引号的 `toolchain.cmake` 路径进行拆分,建议像上例一样整体加引号;若使用 `cmd`/MSYS 终端,直接写相对路径即可。 > **注意**:`CMakeLists.txt` 会拒绝 Visual Studio、Xcode 等多配置生成器,请务必使用 "Unix Makefiles" 或 "Ninja"。 ## 3. 构建产物 ```powershell cmake --build build-debug -j ``` 构建完成后主要文件位于 `build-debug/`: - `libt2.a`:用户静态库 - `t2.elf`:完整可执行镜像(链接自 BSP + 用户库) - `t2.bin`:经 `objcopy` 处理的裸二进制映像 - `map.txt`:链接映射文件 ## 4. 构建 Release 版本 对于单配置生成器,Release/Debug 的差异体现在生成目录和 `CMAKE_BUILD_TYPE`。可以在新的构建目录重复执行一次 CMake,并指定 Release: ```powershell cmake -G "Unix Makefiles" -S . -B build-release "-DCMAKE_TOOLCHAIN_FILE=${PWD}/cmake/intewell-aarch64-toolchain.cmake" -DCMAKE_BUILD_TYPE=Release cmake --build build-release -j ``` 构建结束后,Release 产物位于 `build-release/`,默认包含 `libt2.a`、`t2.elf`、`t2.bin` 与 `map.txt`。如需切换回 Debug,只需回到 `build-debug/`(或任意其他构建目录)重新执行 `cmake --build`。 ## 5. 常用操作 - **清理构建目录**:直接删除 `build-debug/` 或执行 `cmake --build build-debug --target clean`。 - **重新选择工具链**:`cmake/intewell-aarch64-toolchain.cmake` 中定义了交叉工具链路径,可根据需要修改或复制生成新工具链文件。 - **调整编译开关**:`CMakeLists.txt` 对 `t2_app` 目标添加了所有日志里出现的宏、优化与包含目录,可按需增删。 ## 6. 常见问题 | 现象 | 解决办法 | | ---- | -------- | | `Unable to load DLL`(`ar.exe` / `ranlib.exe`) | 未加载 Intewell 的 MSYS 运行时。按“环境准备”章节配置 `PATH` 或使用官方终端。 | | CMake 报错 “Generator 'Visual Studio' is not supported” | 切换到 "Unix Makefiles" 或 "Ninja",并指定工具链文件。 | | 链接阶段提示 `_start` 多次定义 | 需保持 `-nostartfiles -nostdlib`,并确保使用项目提供的 `_linkcmds`/`catlinkcmds`。这些选项已在 `CMakeLists.txt` 中默认配置。 | | CMake 提示 “Could not find toolchain file” | PowerShell 把 `toolchain.cmake` 拆成多个参数。确保整段路径被引号包裹,或改用绝对路径。 | | `CMAKE_MAKE_PROGRAM is not set` | 尚未把 `C:/Intewell_Developer_V2.2.0_release/gnuwin/msys64/usr/bin` 加入 `PATH`,导致找不到 `make`。重新加载环境后再运行 `cmake`。 | --- 如需扩展更多源文件或测试目标,可在 `CMakeLists.txt` 中添加相应源代码,并复用现有的工具链与链接设置。