Files
menu/CMakeLists.txt
2025-12-19 17:01:27 +08:00

113 lines
2.1 KiB
CMake

cmake_minimum_required(VERSION 3.10)
project(menu VERSION 1.3.0 LANGUAGES C)
# 设置C标准
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
# 核心层源文件
set(CORE_SOURCES
src/core/menu_core.c
src/core/menu_event.c
src/core/menu_hash.c
src/core/menu_stack.c
src/core/menu_permission.c
src/core/menu_persistence.c
)
# 功能扩展层源文件
set(FEATURE_SOURCES
src/param/menu_param.c
src/lang/menu_lang.c
)
# API层源文件
set(API_SOURCES
api/menu_api.c
)
# 硬件端口层源文件
set(PORT_SOURCES
port/menu_port.c
)
# 所有源文件
set(MENU_SOURCES
${CORE_SOURCES}
${FEATURE_SOURCES}
${API_SOURCES}
${PORT_SOURCES}
)
# 核心层头文件
set(CORE_HEADERS
src/core/menu_config.h
src/core/menu_types.h
src/core/menu_permission.h
src/core/menu_persistence.h
)
# 功能扩展层头文件
set(FEATURE_HEADERS
src/param/menu_param.h
src/lang/menu_lang.h
)
# API层头文件
set(API_HEADERS
api/menu_api.h
)
# 硬件端口层头文件
set(PORT_HEADERS
port/menu_port.h
)
# 所有头文件
set(MENU_HEADERS
${CORE_HEADERS}
${FEATURE_HEADERS}
${API_HEADERS}
${PORT_HEADERS}
)
# 创建静态库
add_library(menu STATIC ${MENU_SOURCES})
# 设置库的公共头文件
set_target_properties(menu PROPERTIES
PUBLIC_HEADER "${MENU_HEADERS}"
)
# 包含目录
target_include_directories(menu PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/core>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/param>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/lang>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/api>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/port>
$<INSTALL_INTERFACE:include>
)
# 示例程序
option(BUILD_EXAMPLES "Build examples" OFF)
if(BUILD_EXAMPLES)
# 添加示例目录
add_subdirectory(examples)
endif()
# 添加demo目录
add_subdirectory(demo)
# 添加test目录
add_subdirectory(test)
# 安装规则
install(TARGETS menu
ARCHIVE DESTINATION lib
PUBLIC_HEADER DESTINATION include
)