From 41137a1c728afba6b1a6d46df26155de89bdc183 Mon Sep 17 00:00:00 2001 From: jhchun Date: Tue, 28 Jul 2026 16:13:21 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=8C=EB=93=9C=20=EC=8B=9C=20FW=20Version?= =?UTF-8?q?=20=ED=8F=AC=ED=95=A8=20release=20hex=20=EC=9E=90=EB=8F=99=20?= =?UTF-8?q?=EB=B3=B5=EC=82=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 일반 빌드 시 build/merged.hex를 release/VesiScan-Basic_.hex 형식으로 자동 복사하도록 추가 - 생산용 HEX 파일을 펌웨어 버전별로 관리할 수 있게 함 --- sysbuild.cmake | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/sysbuild.cmake b/sysbuild.cmake index 884f2b3..bbde447 100644 --- a/sysbuild.cmake +++ b/sysbuild.cmake @@ -75,3 +75,32 @@ if(EXISTS "${APP_PRJ_CONF}") ) endif() endif() + +# Production HEX file name based on src/main.h FIRMWARE_VERSION. +set(APP_MAIN_H "${APP_DIR}/src/main.h") +if(EXISTS "${APP_MAIN_H}") + set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${APP_MAIN_H}") + file(READ "${APP_MAIN_H}" APP_MAIN_H_TEXT) + + if(APP_MAIN_H_TEXT MATCHES "#define[ \t]+FIRMWARE_VERSION[ \t]+\"([^\"]+)\"") + set(FW_HEX_VERSION "${CMAKE_MATCH_1}") + string(REGEX REPLACE "[^A-Za-z0-9_.+-]" "_" FW_HEX_VERSION "${FW_HEX_VERSION}") + + set(FW_HEX_SOURCE "${CMAKE_BINARY_DIR}/merged.hex") + set(FW_HEX_RELEASE_DIR "${APP_DIR}/release") + set(FW_HEX_VERSIONED "${FW_HEX_RELEASE_DIR}/VesiScan-Basic_${FW_HEX_VERSION}.hex") + + add_custom_command( + OUTPUT "${FW_HEX_VERSIONED}" + COMMAND ${CMAKE_COMMAND} -E make_directory "${FW_HEX_RELEASE_DIR}" + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${FW_HEX_SOURCE}" "${FW_HEX_VERSIONED}" + DEPENDS "${FW_HEX_SOURCE}" + COMMENT "Generating firmware-versioned HEX ${FW_HEX_VERSIONED}" + VERBATIM + ) + + add_custom_target(firmware_versioned_hex ALL + DEPENDS "${FW_HEX_VERSIONED}" + ) + endif() +endif()