p26001-store-acs-soc-fw-app/CMakeLists.txt
2026-09-28 21:33:04 +08:00

162 lines
4.6 KiB
CMake
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

cmake_minimum_required(VERSION 3.16)
set(PROJNAME encoder)
include(config.cmake)
include(FetchContent)
project(${PROJNAME})
set(ARCH arm)
if (USING_HISIMPP5)
add_compile_definitions(
-DUSING_HISIMPP5
)
endif()
add_compile_definitions(
-DFIRMWARE_UPGRADE_FROM_BACKUP_PARTITION
)
execute_process(
COMMAND git log -1 --format=%h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_compile_definitions(-DGIT_COMMIT_HASH=\"${GIT_COMMIT_HASH}\")
# 未定义或为空
if (NOT DEFINED CMAKE_BUILD_TYPE OR NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE Debug)
endif()
message("Project \"${GIT_COMMIT_HASH}\" build type: " ${CMAKE_BUILD_TYPE})
if (CMAKE_BUILD_TYPE MATCHES Debug)
add_compile_definitions(-DDEBUG)
endif()
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
set(Poco_DIR $ENV{POCO_PATH}/lib/cmake/Poco)
link_libraries(
pthread
dl
m
atomic
)
if (CMAKE_BUILD_TYPE MATCHES Debug)
# 定义Debug编译参数
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -Og -Wall -g3 -Wno-psabi -std=c++1z -mfpu=neon -mfloat-abi=softfp") # GDB调试
# SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -Og -Wall -g3 -Wno-psabi -std=c++1z -mfpu=neon -mfloat-abi=softfp -fsanitize=address -fno-eliminate-unused-debug-types -fno-omit-frame-pointer") # 内存检测
# SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -Wno-psabi")
# SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -Wno-psabi -rdynamic -funwind-tables -ffunction-sections") # 可以在应用里捕获SIGSEGV信号,然后用backtrace()函数把堆栈信息打印出来
else()
# 定义Release编译参数
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall -Wno-psabi -mfpu=neon -mfloat-abi=softfp")
endif()
add_compile_definitions(-DOS_LINUX)
elseif (CMAKE_SYSTEM_NAME MATCHES "Windows")
set(Poco_DIR $ENV{POCO_PATH}/cmake)
# 强制Visual Studio使用UTF-8编码
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
# 忽略部分警告
add_compile_definitions(/wd"4828")
# 使用Unicode字符集
add_compile_definitions(-DUNICODE -D_UNICODE)
if (USING_LVGL_PLATFORM OR USING_SOUI_PLATFORM)
# 设置为窗口程序
set(GUI_EXECUTABLE WIN32)
add_compile_definitions(-DWINDOWS_GUI_APPLICATION)
endif()
link_directories($ENV{POCO_PATH}/lib)
endif()
find_package(Poco REQUIRED COMPONENTS Foundation Net XML Encodings Util Zip Crypto)
include_directories(
.
${Poco_LIBRARIES}
$ENV{JSONC_PATH}/include
$ENV{CRYPTOAUTHLIB_PATH}/include/cryptoauthlib
$ENV{OPENSSL_PATH}/include
$ENV{PAHO_MQTTC_PATH}/include
)
link_libraries(
${Poco_LIBRARIES}
$ENV{CRYPTOAUTHLIB_PATH}/lib/libcryptoauth.a
$ENV{OPENSSL_PATH}/lib/libssl.a
$ENV{OPENSSL_PATH}/lib/libcrypto.a
#$ENV{PAHO_MQTTC_PATH}/lib/libpaho-mqtt3a.a
#$ENV{PAHO_MQTTC_PATH}/lib/libpaho-mqtt3as.a
$ENV{PAHO_MQTTC_PATH}/lib/libpaho-mqtt3c.a
#$ENV{PAHO_MQTTC_PATH}/lib/libpaho-mqtt3cs.a
)
if (USING_HISIMPP5)
include_directories(
$ENV{MPP_PATH}/include
)
link_libraries(
$ENV{MPP_PATH}/lib/libmpi.a
$ENV{MPP_PATH}/lib/libdnvqe.a
$ENV{MPP_PATH}/lib/libupvqe.a
$ENV{MPP_PATH}/lib/libvqe_res.a
$ENV{MPP_PATH}/lib/libVoiceEngine.a
$ENV{MPP_PATH}/lib/libsecurec.so
$ENV{MPP_PATH}/lib/libhdmi.a
$ENV{MPP_PATH}/lib/libtde.a
)
endif()
aux_source_directory(. MAIN_SOURCES)
add_executable(${PROJNAME} ${GUI_EXECUTABLE} ${MAIN_SOURCES})
# target_compile_options(${PROJNAME} PRIVATE
# -fsanitize=address,undefined
# -fsanitize=float-divide-by-zero
# -fsanitize=null
# -fsanitize=bounds-strict
# )
# target_link_options(${PROJNAME} PRIVATE
# -fsanitize=address,undefined
# )
if (CMAKE_SYSTEM_NAME MATCHES "Windows")
SET_PROPERTY (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJNAME} )
endif()
if (USING_VIDEO_SUBSYSTEM)
add_compile_definitions(-DUSING_VIDEO_SUBSYSTEM)
endif()
# 网络
if (USING_NETWORK_SUBSYSTEM)
add_compile_definitions(-DUSING_NETWORK_SUBSYSTEM)
endif()
# 板级设备
if (USING_HARDWARE_SUBSYSTEM)
add_compile_definitions(-DUSING_HARDWARE_SUBSYSTEM)
endif()
if (USING_VIDEO_SUBSYSTEM)
include(video/video.cmake)
endif()
# 网络
if (USING_NETWORK_SUBSYSTEM)
include(network/network.cmake)
endif()
# 板级设备
if (USING_HARDWARE_SUBSYSTEM)
include(hardware/hardware.cmake)
endif()
# Util
include(util/util.cmake)