Browse Source

【待合】优化选项识别逻辑

master
Lizongdi 4 days ago
parent
commit
45d4f70dac
  1. 28
      CMakeLists.txt

28
CMakeLists.txt

@ -24,23 +24,17 @@ set(GLOBAL_ENABLED_MACROS "" CACHE INTERNAL "List of enabled macros for main")
list(APPEND GLOBAL_ENABLED_MACROS MEM_POOL_TOTAL_SIZE=${MY_MEMPOOL_SIZE})
set(GLOBAL_ENABLED_MACROS ${GLOBAL_ENABLED_MACROS} PARENT_SCOPE)
function(add_module MOD_NAME MOD_PATH)
if(ARGC GREATER 2)
set(DEFAULT_STATE ${ARGV2})
else()
set(DEFAULT_STATE OFF)
function(add_module MOD_NAME MOD_PATH DEFAULT_STATE HAS_TEST)
if(NOT DEFAULT_STATE STREQUAL "ON" AND NOT DEFAULT_STATE STREQUAL "OFF")
message(FATAL_ERROR "[add_module] Invalid DEFAULT_STATE for ${MOD_NAME}: ${DEFAULT_STATE}")
endif()
if(ARGC GREATER 3)
set(HAS_TEST ${ARGV2})
set(HAS_TEST ${ARGV3})
else()
set(HAS_TEST OFF)
if(NOT HAS_TEST STREQUAL "ON" AND NOT HAS_TEST STREQUAL "OFF")
message(FATAL_ERROR "[add_module] Invalid HAS_TEST for ${MOD_NAME}: ${HAS_TEST}")
endif()
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${MOD_PATH}")
message(WARNING "[Root] Module '${MOD_NAME}' skipped: Path '${MOD_PATH}' does not exist!")
# message(FATAL_ERROR "[Root] Module '${MOD_NAME}' failed: Path '${MOD_PATH}' does not exist!")
return()
endif()
@ -49,12 +43,12 @@ function(add_module MOD_NAME MOD_PATH)
if(${BUILD_${MOD_UPPER}})
set(BUILD_${MOD_UPPER}_HAS_TEST ${HAS_TEST} CACHE INTERNAL "Has test support")
list(APPEND GLOBAL_ENABLED_MODULES ${MOD_NAME})
list(APPEND GLOBAL_ENABLED_MACROS BUILD_${MOD_UPPER})
message(STATUS "[Root] Enabled module(TestSupport: ${HAS_TEST}): ${MOD_NAME} (Default: ${DEFAULT_STATE}) -> Macro: BUILD_${MOD_UPPER}")
set(GLOBAL_ENABLED_MODULES ${GLOBAL_ENABLED_MODULES} PARENT_SCOPE)
set(GLOBAL_ENABLED_MACROS ${GLOBAL_ENABLED_MACROS} PARENT_SCOPE)
add_subdirectory(${MOD_PATH})
list(APPEND GLOBAL_ENABLED_MODULES ${MOD_NAME})
list(APPEND GLOBAL_ENABLED_MACROS BUILD_${MOD_UPPER})
message(STATUS "[Root] Enabled module(TestSupport: ${HAS_TEST}): ${MOD_NAME} (Default: ${DEFAULT_STATE}) -> Macro: BUILD_${MOD_UPPER}")
set(GLOBAL_ENABLED_MODULES ${GLOBAL_ENABLED_MODULES} PARENT_SCOPE)
set(GLOBAL_ENABLED_MACROS ${GLOBAL_ENABLED_MACROS} PARENT_SCOPE)
add_subdirectory(${MOD_PATH})
endif()
endfunction()

Loading…
Cancel
Save