diff --git a/doc/cmake_guide.md b/doc/cmake_guide.md new file mode 100644 index 00000000..b754d9c8 --- /dev/null +++ b/doc/cmake_guide.md @@ -0,0 +1,117 @@ +# 1. CMake构建工具使用 + +  SDK使用CMake工具构建。 + +## 1.1. 安装 + +```code +详见://tools/cmake/Makefile +$ cd tools/cmake +$ make +$ cmake --version +cmake version 3.27.4 +``` + +## 1.2. SDK构建配置脚本 + +* build目录下是基本的配置脚本。 + +```code +build/ +├── cmake +│   ├── Makefile // 调用cmake命令生成Makefile文件; +│   └── toolchain +│   └── linux.toolchain.cmake // 工具链配置文件已经一些全局变量; +├── global_config.cmake // 配置文件 +└── sdk_config.cmake // 配置文件 +``` + +### 1.2.1. //build/cmake/Makefile + +  调用cmake命令生成Makefile文件。 + +```code +all: + @mkdir -p ../../cmake-shell;\ + cd ../../cmake-shell;\ + pwd;\ + # 调用cmake命令,并指定工具链配置文件,生成Makefile文件。 + cmake -DCMAKE_TOOLCHAIN_FILE="./build/cmake/toolchain/linux.toolchain.cmake" ..;\ + cd .. +clean: + rm -rf ../../cmake-shell +``` + +### 1.2.2. //build/cmake/toolchain/linux.toolchain.cmake + +  工具链配置文件或者一些跨平台差异化的配置文件。该文件在//build/cmake/Makefile中被指定,当需要交叉编译时,此文件的变量需要被重新配置。 + +```code + +INCLUDE(CMakeForceCompiler) + +set(LINUX_TEST "true") +set(CROSS_COMPILE_PREFIX "") // 工具链前缀 +set(CMAKE_C_COMPILER "${CROSS_COMPILE_PREFIX}gcc") // 配置工具链 +set(CMAKE_CXX_COMPILER "${CROSS_COMPILE_PREFIX}g++") // 配置工具链 + +# path to compiler and utilities +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +# Name of the target platform +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR arm) + +# Version of the system +set(CMAKE_SYSTEM_VERSION 1) +cmake_policy(SET CMP0011 NEW) +cmake_policy(SET CMP0005 NEW) + +add_definitions(-Wall -O2 -Os) +add_definitions(-Wno-unused-local-typedefs) +add_definitions(-Wstrict-aliasing -Wwrite-strings) + +set(TOOLCHAIN_NAME arm-linux-gnueabihf) + +set(TARGET_PLATFORM "linux") // 编译系统平台,Linux表示在PC的ubuntu系统上编译 +set(SUBMODULE_PATH_OF_IPC_SDK "") // 子仓库路面,此处为空,交叉编译时设置 +set(PLATFORM_PATH "${CMAKE_CURRENT_SOURCE_DIR}") // 平台路径 +set(TEST_COVERAGE "true") // 覆盖率报告开关 +add_definitions(-DPLATFORM_PATH=\"${PLATFORM_PATH}\") // 定义一个宏 +set(PROJECT_OUTPUT_FOLDER "output_files") // 编译的目标文件输出目录 +set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_OUTPUT_FOLDER}") + +... // 此处省略不同模块的配置参数,一般是一些宏定义; +``` + +### 1.2.3. //CMakeLists.txt + +  SDK跟目录下的第一个CMakeLists.txt文件,cmake命令执行的时候会指定根目录,到此目录下寻找CMakeLists.txt文件作为整个项目的构建起点。 + +## 1.3. 重要的配置 + +### 1.3.1. 目录设置 + +  目录结构都是通过.cmake脚本来配置的。 + +#### 1.3.1.1. 源码目录结构配置 + +详见://build/global_config.cmake + +```code +set(EXEC_OUTPUT_PATH "${PLATFORM_PATH}/${PROJECT_OUTPUT_FOLDER}/bin") +set(LIBS_OUTPUT_PATH "${PLATFORM_PATH}/${PROJECT_OUTPUT_FOLDER}/libs") +set(TEST_TOOLS_OUTPUT_PATH "${PLATFORM_PATH}/${PROJECT_OUTPUT_FOLDER}/libs/test_tools") +set(EXTERNAL_LIBS_OUTPUT_PATH "${PLATFORM_PATH}/${PROJECT_OUTPUT_FOLDER}/libs/external") +set(TEST_OUTPUT_PATH "${PLATFORM_PATH}/${PROJECT_OUTPUT_FOLDER}/test") + +set(PROJECT_ROOT_PATH "${PLATFORM_PATH}") +set(APPLICATION_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/application") # 应用层目录 +set(MIDDLEWARE_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/middleware") # 中间件层目录 +set(UTILS_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/utils") # 工具层目录 +set(HAL_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/hal") # 硬件抽象层目录 +set(TEST_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/test") # 自动化测试代码/example目录 +set(EXTERNAL_SOURCE_PATH "${CMAKE_SOURCE_DIR_IPCSDK}/external") # 外部依赖库目录 +``` diff --git a/doc/git_guide.md b/doc/git_guide.md index 3dcfe444..3d2d4546 100644 --- a/doc/git_guide.md +++ b/doc/git_guide.md @@ -174,17 +174,37 @@ Cloning into '/home/xiaojiazhu/project/rkipc/ipc_20240517/project/app/component/ Submodule path 'rv1106_ipc_sdk': checked out 'ff8da760b201d365300aed78190de8564f0d2171' ``` -### 1.4.4. git删除一个远端分支 +### 1.4.4. git删除远端地址 ```code -// git push --delete +# git remote remove +$ git remote -v +--------------- +Germany payton@git.affgt.com:Germany/hunting.git (fetch) +Germany payton@git.affgt.com:Germany/hunting.git (push) +origin git@gitee.com:shenzhen-jiuyilian/ipc.git (fetch) +origin git@gitee.com:shenzhen-jiuyilian/ipc.git (push) +$ git remote remove Germany +--------------------------- +$ git remote -v +---------------- +origin git@gitee.com:shenzhen-jiuyilian/ipc.git (fetch) +origin git@gitee.com:shenzhen-jiuyilian/ipc.git (push) +``` + +### 1.4.5. git删除一个远端分支 + +```code +# git push --delete $ git branch -r +--------------- origin/Branch_QT origin/HEAD -> origin/master origin/master origin/master-develop origin/without-testtools $ git push origin --delete Branch_QT +------------------------------------- remote: Powered by GITEE.COM [GNK-6.4] To gitee.com:shenzhen-jiuyilian/ipc.git - [deleted] Branch_QT