get_filename_component(name ${CMAKE_CURRENT_LIST_DIR} NAME) set(rely global::drogon global::libarchive global::SQLiteCpp) rcl_load_dependency_environment(${rely}) #message("222222222 LibArchive_SUB_LIBRARIES {${LibArchive_SUB_LIBRARIES}}") find_package(Drogon) find_package(SQLiteCpp CONFIG REQUIRED) set(Core Core_Static) if (1) set(md "${CMAKE_CURRENT_LIST_DIR}/module") if (WIN32) set(cfg_dir ${CMAKE_CURRENT_LIST_DIR}/config) else () set(cfg_dir ${CMAKE_CURRENT_LIST_DIR}/config) endif () set(data_dir ${CMAKE_CURRENT_LIST_DIR}/data) _create("dll" dll_source) _create("exe" data_process) _attach_include_dir(dll_source "${md}") _attach_source_dir(dll_source "${md}/dll_source") _attach_include_dir(data_process "${md}") _attach_source_dir(data_process "${md}/dll_source") _depend(dll_source ${Core}) _depend(data_process ${Core}) _attach_post_build_file(dll_source ${cfg_dir}/data_progress_config.json ${data_dir}/BIN_Blank_Text/ADS-B_195_0205.txt # "${CMAKE_CURRENT_LIST_DIR}/data/BIN_Blank_Text/ADS-B_195_0205.txt" ) _create("dll" mlat_source) _attach_include_dir(mlat_source "${md}") _attach_source_dir(mlat_source "${md}/mlat_source") _depend(mlat_source ${Core}) _create("exe" mlat_source_exe) _attach_include_dir(mlat_source_exe "${md}") _attach_source_dir(mlat_source_exe "${md}/mlat_source") _depend(mlat_source_exe ${Core}) _create("exe" ecap_server) _depend(ecap_server SSR) _attach_include_dir(ecap_server "${md}") _attach_source_dir(ecap_server "${md}/Local_Server") target_include_directories(ecap_server PRIVATE "${CMAKE_CURRENT_LIST_DIR}/../../core_library/Core/3rd/ucoro/include") target_link_libraries(ecap_server PRIVATE Drogon::Drogon) target_link_libraries(ecap_server PRIVATE SQLiteCpp) target_link_libraries(ecap_server PRIVATE ${ZLIB_LIBRARY}) target_include_directories(ecap_server PRIVATE ${ZLIB_INCLUDE_DIR}) message("LibArchive_SUB_LIBRARIES {${LibArchive_SUB_LIBRARIES}}") target_link_libraries(ecap_server PRIVATE LibArchive::LibArchive ${LibArchive_SUB_LIBRARIES} ) target_compile_definitions(ecap_server PRIVATE LIBARCHIVE_STATIC) _attach_source_file(ecap_server "${md}/Local_Server_main.cpp") _attach_post_build_file(ecap_server ${cfg_dir}/config.json) # if (MSVC) # # target_compile_options(ecap_server PRIVATE /fsanitize=address /Zi) # # target_link_options(ecap_server PRIVATE /INCREMENTAL:NO /DEBUG) # get_filename_component(_msvc_bin_dir "${CMAKE_CXX_COMPILER}" DIRECTORY) # find_file(ASAN_RUNTIME_DLL # NAMES clang_rt.asan_dbg_dynamic-x86_64.dll # PATHS "${_msvc_bin_dir}" # NO_DEFAULT_PATH # REQUIRED # ) # if (NOT ASAN_RUNTIME_DLL) # message(FATAL_ERROR "找不到 ASan 运行库: clang_rt.asan_dbg_dynamic-x86_64.dll,搜索目录: ${_msvc_bin_dir}") # endif () # add_custom_command(TARGET ecap_server POST_BUILD # COMMAND "${CMAKE_COMMAND}" -E copy_if_different # "${ASAN_RUNTIME_DLL}" # "$" # VERBATIM # ) # else () # # # target_compile_options(ecap_server PRIVATE -fsanitize=address -fno-omit-frame-pointer -g) # # # # target_link_options(ecap_server PRIVATE -fsanitize=address) # # endif () if (UNIX AND NOT APPLE) # 添加进程间通信系统库 target_compile_options(ecap_server PRIVATE -g -gstrict-dwarf -gdwarf-4 -fvar-tracking-assignments) # set(CMAKE_FOLDER "lzy") # add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/lzy ${CMAKE_BINARY_DIR}/lzy) # unset(CMAKE_FOLDER) set(ver v1.0.4) set(WEB_DIR "${CMAKE_CURRENT_LIST_DIR}/webapp") set(publish_root_dir "${CMAKE_CURRENT_LIST_DIR}/ver") set(publish_dir "${publish_root_dir}/${ver}") set(WEB_OUT_DIR "${publish_dir}/wwwroot") set(PACKAGE_ZIP "${publish_dir}.zip") set(NODE_DIR "C:/Users/wyc/AppData/Roaming/JetBrains/WebStorm2026.1/node/versions/24.15.0") set(NPM_EXECUTABLE "${NODE_DIR}/npm.cmd") if (NOT EXISTS "${NODE_DIR}/node.exe") message(FATAL_ERROR "node.exe not found: ${NODE_DIR}/node.exe") endif () add_custom_target(ecap_server_package COMMAND ${CMAKE_COMMAND} -E make_directory "${publish_dir}" COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${publish_dir} COMMAND ${CMAKE_COMMAND} -E remove_directory "${WEB_OUT_DIR}" COMMAND ${CMAKE_COMMAND} -E env "PATH=${NODE_DIR};$ENV{PATH}" ${CMAKE_COMMAND} -E chdir "${WEB_DIR}" "${NPM_EXECUTABLE}" run build -- --outDir "${WEB_OUT_DIR}" --emptyOutDir COMMAND ${CMAKE_COMMAND} -E remove -f "${PACKAGE_ZIP}" COMMAND ${CMAKE_COMMAND} -E chdir "${publish_dir}" ${CMAKE_COMMAND} -E tar cf "${PACKAGE_ZIP}" --format=zip -- . COMMENT "Build frontend" USES_TERMINAL VERBATIM ) add_dependencies(ecap_server_package ecap_server) endif () if (MSVC) target_compile_definitions(ecap_server PRIVATE _CRTDBG_MAP_ALLOC ) endif () add_dependencies(ecap_server dll_source) if (WIN32) endif () _create("exe" test_drogon) _attach_include_dir(test_drogon "${md}") _attach_source_dir(test_drogon "${md}/test_drogon") target_link_libraries(test_drogon PRIVATE Drogon::Drogon) endif () rcl_unload_dependency_environment(${rely}) #include("${CMAKE_SOURCE_DIR}/0_cmake_library/ninja_build_analyze/export.cmake") # #register_ninja_build_analyze_target( # ninja_build_analyze_ctx # 分析上下文 target 名,自己起名 # "Core_Static" # 要分析的构建目标;空字符串表示 all # "${CMAKE_BINARY_DIR}/analyze" # 分析输出目录;空字符串表示 build/build_analysis # "ON" # 是否先 clean:ON/OFF # "30" # top 数量;空字符串表示 30 #)