Add cmake build.

This commit is contained in:
xiaojiazhu 2023-07-09 08:27:00 +08:00
parent 5d34ede653
commit 50af2a429a
10 changed files with 162 additions and 0 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
.vscode
cmake-shell-linux/
external/gtest/googletest-release-1.11.0/
external/libconfig/libconfig-1.7.3/
out/

64
CMakeLists.txt Normal file
View File

@ -0,0 +1,64 @@
cmake_minimum_required(VERSION 3.5.1)
include(build/global_config.cmake)
project(app)
message("platform = ${TARGET_PLATFORM}")
message("platform PATH = ${PLATFORM_PATH}")
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
include(build/cmake/toolchain/linux.toolchain.cmake)
endif()
#gdb debug
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
message("---------------------------Debug mode.-----------------------")
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
# asan
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined")
endif()
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
#
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
add_definitions("-DPLATFORM_LINUX")
endif()
if($ENV{BUILD_COVERAGE} MATCHES "true")
message("you choose to build gcno file")
add_definitions("-fprofile-arcs")
add_definitions("-ftest-coverage")
endif()
#
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14)
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
# execute_process(COMMAND sh build_lvgl_for_cmakelist.sh ${TARGET_PLATFORM} ${CMAKE_SOURCE_DIR} WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/lvglLinux-x86/)
# add_subdirectory(external/lvglLinux-x86)
endif()
#
add_subdirectory(application)
add_subdirectory(component)
add_subdirectory(hal)
add_subdirectory(test)
string(COMPARE EQUAL "${PLATFORM_PATH}" "" value)
message("The platform path is ${PLATFORM_PATH}.")
if (value EQUAL 0) #
message("build chip board code.")
add_subdirectory(${PLATFORM_PATH})
endif()

18
Makefile Normal file
View File

@ -0,0 +1,18 @@
gmock:
$(MAKE) -C external/gtest all
gmock_clean:
$(MAKE) -C external/gtest clean
cmake:
$(MAKE) -C build/cmake all
cmake_clean:
$(MAKE) -C build/cmake clean
all:cmake
$(MAKE) -C cmake-shell-linux all
clean:
$(MAKE) -C cmake-shell-linux clean
@rm -rf external/gtest/googletest-release-1.11.0 \
external/lvglLinux-x86/lv_sim_vscode_sdl \
out \
cmake-shell-linux

3
build/README.md Normal file
View File

@ -0,0 +1,3 @@
# cmake编译配置
## 目录
./toolchain配置编译工具链

8
build/cmake/Makefile Normal file
View File

@ -0,0 +1,8 @@
all:
@mkdir -p ../../cmake-shell-linux;\
cd ../../cmake-shell-linux;\
pwd;\
cmake -DCMAKE_TOOLCHAIN_FILE="./build/cmake/toolchain/linux.toolchain.cmake" ..;\
cd ..
clean:
rm -rf ../../cmake-shell-linux

2
build/cmake/README.md Normal file
View File

@ -0,0 +1,2 @@
# cmake

View File

@ -0,0 +1,32 @@
INCLUDE(CMakeForceCompiler)
set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER 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)
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")
set(AT_COMMAND_PATH "${CMAKE_SOURCE_DIR}/at-command/eg91")

16
build/global_config.cmake Normal file
View File

@ -0,0 +1,16 @@
# TARGET_PLATFORM
# set(TARGET_PLATFORM "linux")
set(DEFINE_LINUX "linux")
set(DEFINE_SIGMASTART_333DE "sigmastart_333DE")
set(EXEC_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/out/bin")
set(LIBS_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/out/libs")
set(TEST_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/out/test")
set(PROJECT_ROOT_PATH "${CMAKE_SOURCE_DIR}")
set(APPLICATION_SOURCE_PATH "${CMAKE_SOURCE_DIR}/application")
set(COMPONENT_SOURCE_PATH "${CMAKE_SOURCE_DIR}/component")
set(HAL_SOURCE_PATH "${CMAKE_SOURCE_DIR}/hal")
set(TEST_SOURCE_PATH "${CMAKE_SOURCE_DIR}/test")
set(EXTERNAL_SOURCE_PATH "${CMAKE_SOURCE_DIR}/external")

View File

@ -0,0 +1,14 @@
# This config file is only for independent source files.
# Never leave over any warning in independt project.
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wextra")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -Wextra")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror")
# For build coverage report in linux-x86
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
endif()

0
doc/design.md.txt Normal file
View File