目的与背景

作者:yy易游官网  日期:2025-12-15  浏览:  来源:yy易游体育

目的与背景

- 针对 MSPM0G3507,在 CCS 与 CLion 联合开发调试的场景下,通过 CLion 提升 CCS 工程开发体验,尤其关注构建系统的改进以缓解编译慢的问题。编译器仍为 TI 自带的 ti-clang,因此解决思路聚焦在构建与集成层面。

核心问题

- CCS 以 Makefile/gmake 为基础的构建较慢,添加 LVGL 等第三方库后,单次编译耗时显著;Ninja 虽有提升但仍受限于 CCS 的构建逻辑。

- 一旦 syscfg 发生变化或增删文件,CCS 需要执行全量清理并重新编译,造成开发体验不佳,特别是对依赖第三方库的工程。

总体解决思路

- 将日常开发工作尽量从 CCS 转移至 CLion,通过 ti-clang 模拟原生 CCS 编译过程,保留原生开发体验,同时实现快速迭代。

- 提供一种可选的静态库方案,在不频繁改动的库文件上提前编译为静态库,减少 CCS 的重复编译,但需要在 CLion 与 CCS 之间保持同步。

在 CLion 中配置 ti-clang 工具链

- 新建一个空的 C++ 工程,根目录创建空的 CMakeLists.txt,为 CLion 的构建准备。

- 找到 TI 的 ti-clang 工具链路径,通常在 CCS 安装目录的 bin 目录中,tiarmclang 同时承担 C 与 C++ 的编译职能。

- 将 CLion 的 C/C++ 编译器路径统一设置为 tiarm-clang,并在设置中将 CMake 的默认工具链切换为 ti-clang。

- 可以在 CMake 中通过 -j 参数指定并行编译的最大核数,例如 -j 16,以提升编译效率。

- 提供一个可复用的 CMakeLists.txt 模板,初学者仅需按红框处修改相关路径与参数即可。

SDK 路径与编译配置

- 在 CCS 中的 Arm Compiler 设置中查找 SDK 路径,将其作为 SDK_DIR 传给 CLion 的 CMake 配置,例如在 CMake 配置中加入参数 -DSDK_DIR="路径"。

- 更新后通常会触发 CMake 的自动刷新,若无错误表示路径配置正确。

源文件与头文件组织

- 将主工程放置在 core 目录,并将源文件通过通配符包含,如 "core/*.cpp"。这样可以免去逐个列出文件的麻烦。

- 对于头文件引用,若需要新增数据目录 data,并创建 data.h,需要在 CMakeLists.txt 中在 file 配置上方添加 data 目录,并重新生成 CMake。

- 编译时 CLion 会进行增量编译,初次包含 SDK 的相关文件时会较耗时,后续只对改动的文件重新编译。

源代码与头文件的路径管理

- 如果涉及 data 目录等头文件,需要在 CLion 的 include 路径和数据目录在 CMakeLists 中保持一致,确保 CLion 与 CCS 的头文件路径统一。

- CCS 侧仍需手工添加头文件目录(Include Options),可使用相对路径如 ${PROJECT_ROOT}/data,确保的确能找到头文件。

编译与同步步骤

- 在 CLion 内编译时,CMake 会生成并链接所需的 SDK 库,初次构建可能较慢;但由于 CMake 的增量特性,后续变动对 SDK 的影响较小。

- CCS 的同步编译仍然需要进行,但可以通过排除无关的构建输出目录来减少干扰:排除 cmake-build 目录中的无关文件,以避免被 CCS 自动检测到。

- CCS 侧若仍需头文件或库路径,需要在 Arm Compiler 的 Include Options 与 Linker 设置中逐步加入相应目录。确保包含路径在 CLion 与 CCS 端一致。

静态库方案(可选)

- 将不频繁修改的第三方库(如 LVGL)编译为静态库,并在 CLion 中生成静态库,CCS 仅链接静态库即可提升编译速度。

- 静态库方案的注意点:库中的每个 .o 文件都会成为独立的编译单元,链接时可能造成可执行文件增大;开发阶段可优先使用静态库进行快速迭代,正式阶段再回到源码编译并开启优化。

- LVGL 的工作流程示例:将 LVGL 放入 middleware,并在 lib 目录中管理,通过设置 LVGL_SOURCES 收集源文件,将其作为静态库 lvgl 的源文件;设置 LVGL 的头文件目录和输出目录,使其在 CCS 链接时可用。

- 编译完成后,CCS 端要排除 LVGL 的源码目录,以免重复编译,同时在链接阶段将 lvgl 静态库路径添加到链接器选项中,并将 LVGL 的头文件目录加入编译器选项中。

CMakeLists 的要点与注意事项

- 通过 CMakeLists 设置编译和链接标志,确保头文件目录、库目录、预编译宏等信息在 CLion 与 CCS 之间保持一致。

- 针对 ti-clang 的响应文件大小限制,确保响应文件按需要解决行数限制(如强制每行一个目标)。

- 在项目属性中检查编译标志与链接标志,确保包含目录和库目录与实际结构对应,避免路径错配。

集成与克隆项目流程要点

- 在 CLion 中克隆项目,选择 ti-clang 作为 CMake 工具链,并在 CMake 选项中正确配置 SDK 目录。

- 克隆后首次构建可能需要 CCS 提供的文件,例如 SDK 或 Makefile 等,请在 CCS 中打开相应工程并确保所需资源就绪。

- 初次集成阶段可能需要下载或生成某些依赖文件,确保网络与权限环境稳定后再尝试编译。

使用要点与实践建议

- 日常开发以 CLion 为主,频繁修改的配置与代码在 CLion 内完成,CCS 主要用于调试阶段使用。

- 若对构建速度要求极高,可在初期阶段将 LVGL 等库编译为静态库,搭配逐步回到源码编译的策略,确保库与工程的版本一致性。

- 需要定期同步 CLion 与 CCS 的头文件、库目录与 SDK 路径,避免因路径不一致引发编译或链接错误。

- 对于较复杂的工程,参考模板化的 CMakeLists 将显著降低上手难度,使用统一的路径和变量设置可快速实现跨工具链的协同开发。

总结建议

- 将日常编码和逻辑调试尽量放在 CLion 中进行,使用 CCS 仅在必要时进行调试和测试,以显著提升迭代效率。

- 在需要更高稳定性和更快的编译时间时,优先考虑静态库方案,并确保 CMakeLists、头文件和库路径的一致性。

- 持续维护 CLion 与 CCS 的工具链、SDK_dir、包含路径和库目录的对应关系,避免路径错位带来的构建瓶颈与错误yy易游

目的与背景

- 针对 MSPM0G3507,在 CCS 与 CLion 联合开发调试的场景下,通过 CLion 提升 CCS 工程开发体验,尤其关注构建系统的改进以缓解编译慢的问题。编译器仍为 TI 自带的 ti-clang,因此解决思路聚焦在构建与集成层面。

核心问题

- CCS 以 Makefile/gmake 为基础的构建较慢,添加 LVGL 等第三方库后,单次编译耗时显著;Ninja 虽有提升但仍受限于 CCS 的构建逻辑。

- 一旦 syscfg 发生变化或增删文件,CCS 需要执行全量清理并重新编译,造成开发体验不佳,特别是对依赖第三方库的工程。

总体解决思路

- 将日常开发工作尽量从 CCS 转移至 CLion,通过 ti-clang 模拟原生 CCS 编译过程,保留原生开发体验,同时实现快速迭代。

- 提供一种可选的静态库方案,在不频繁改动的库文件上提前编译为静态库,减少 CCS 的重复编译,但需要在 CLion 与 CCS 之间保持同步。

在 CLion 中配置 ti-clang 工具链

- 新建一个空的 C++ 工程,根目录创建空的 CMakeLists.txt,为 CLion 的构建准备。

- 找到 TI 的 ti-clang 工具链路径,通常在 CCS 安装目录的 bin 目录中,tiarmclang 同时承担 C 与 C++ 的编译职能。

- 将 CLion 的 C/C++ 编译器路径统一设置为 tiarm-clang,并在设置中将 CMake 的默认工具链切换为 ti-clang。

- 可以在 CMake 中通过 -j 参数指定并行编译的最大核数,例如 -j 16,以提升编译效率。

- 提供一个可复用的 CMakeLists.txt 模板,初学者仅需按红框处修改相关路径与参数即可。

SDK 路径与编译配置

- 在 CCS 中的 Arm Compiler 设置中查找 SDK 路径,将其作为 SDK_DIR 传给 CLion 的 CMake 配置,例如在 CMake 配置中加入参数 -DSDK_DIR="路径"。

- 更新后通常会触发 CMake 的自动刷新,若无错误表示路径配置正确。

源文件与头文件组织

- 将主工程放置在 core 目录,并将源文件通过通配符包含,如 "core/*.cpp"。这样可以免去逐个列出文件的麻烦。

- 对于头文件引用,若需要新增数据目录 data,并创建 data.h,需要在 CMakeLists.txt 中在 file 配置上方添加 data 目录,并重新生成 CMake。

- 编译时 CLion 会进行增量编译,初次包含 SDK 的相关文件时会较耗时,后续只对改动的文件重新编译。

源代码与头文件的路径管理

- 如果涉及 data 目录等头文件,需要在 CLion 的 include 路径和数据目录在 CMakeLists 中保持一致,确保 CLion 与 CCS 的头文件路径统一。

- CCS 侧仍需手工添加头文件目录(Include Options),可使用相对路径如 ${PROJECT_ROOT}/data,确保的确能找到头文件。

编译与同步步骤

- 在 CLion 内编译时,CMake 会生成并链接所需的 SDK 库,初次构建可能较慢;但由于 CMake 的增量特性,后续变动对 SDK 的影响较小。

- CCS 的同步编译仍然需要进行,但可以通过排除无关的构建输出目录来减少干扰:排除 cmake-build 目录中的无关文件,以避免被 CCS 自动检测到。

- CCS 侧若仍需头文件或库路径,需要在 Arm Compiler 的 Include Options 与 Linker 设置中逐步加入相应目录。确保包含路径在 CLion 与 CCS 端一致。

静态库方案(可选)

- 将不频繁修改的第三方库(如 LVGL)编译为静态库,并在 CLion 中生成静态库,CCS 仅链接静态库即可提升编译速度。

- 静态库方案的注意点:库中的每个 .o 文件都会成为独立的编译单元,链接时可能造成可执行文件增大;开发阶段可优先使用静态库进行快速迭代,正式阶段再回到源码编译并开启优化。

- LVGL 的工作流程示例:将 LVGL 放入 middleware,并在 lib 目录中管理,通过设置 LVGL_SOURCES 收集源文件,将其作为静态库 lvgl 的源文件;设置 LVGL 的头文件目录和输出目录,使其在 CCS 链接时可用。

- 编译完成后,CCS 端要排除 LVGL 的源码目录,以免重复编译,同时在链接阶段将 lvgl 静态库路径添加到链接器选项中,并将 LVGL 的头文件目录加入编译器选项中。

CMakeLists 的要点与注意事项

- 通过 CMakeLists 设置编译和链接标志,确保头文件目录、库目录、预编译宏等信息在 CLion 与 CCS 之间保持一致。

- 针对 ti-clang 的响应文件大小限制,确保响应文件按需要解决行数限制(如强制每行一个目标)。

- 在项目属性中检查编译标志与链接标志,确保包含目录和库目录与实际结构对应,避免路径错配。

集成与克隆项目流程要点

- 在 CLion 中克隆项目,选择 ti-clang 作为 CMake 工具链,并在 CMake 选项中正确配置 SDK 目录。

- 克隆后首次构建可能需要 CCS 提供的文件,例如 SDK 或 Makefile 等,请在 CCS 中打开相应工程并确保所需资源就绪。

- 初次集成阶段可能需要下载或生成某些依赖文件,确保网络与权限环境稳定后再尝试编译。

使用要点与实践建议

- 日常开发以 CLion 为主,频繁修改的配置与代码在 CLion 内完成,CCS 主要用于调试阶段使用。

- 若对构建速度要求极高,可在初期阶段将 LVGL 等库编译为静态库,搭配逐步回到源码编译的策略,确保库与工程的版本一致性。

- 需要定期同步 CLion 与 CCS 的头文件、库目录与 SDK 路径,避免因路径不一致引发编译或链接错误。

- 对于较复杂的工程,参考模板化的 CMakeLists 将显著降低上手难度,使用统一的路径和变量设置可快速实现跨工具链的协同开发。

总结建议

- 将日常编码和逻辑调试尽量放在 CLion 中进行,使用 CCS 仅在必要时进行调试和测试,以显著提升迭代效率。

- 在需要更高稳定性和更快的编译时间时,优先考虑静态库方案,并确保 CMakeLists、头文件和库路径的一致性。

- 持续维护 CLion 与 CCS 的工具链、SDK_dir、包含路径和库目录的对应关系,避免路径错位带来的构建瓶颈与错误yy易游