Files
ECAP_Server/main.cmake
T
2026-06-25 08:42:46 +08:00

157 lines
5.6 KiB
CMake
Raw 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.
get_filename_component(name ${CMAKE_CURRENT_LIST_DIR} NAME)
set(rely libarchive SQLiteCpp)
rcl_load_dependency_environment(drogon ${rely})
message(STATUS "before find SQLiteCpp CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}")
message(STATUS "CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}")
message(STATUS "CMAKE_FIND_USE_CMAKE_PATH=${CMAKE_FIND_USE_CMAKE_PATH}")
message(STATUS "CMAKE_FIND_ROOT_PATH=${CMAKE_FIND_ROOT_PATH}")
message(STATUS "CMAKE_FIND_ROOT_PATH_MODE_PACKAGE=${CMAKE_FIND_ROOT_PATH_MODE_PACKAGE}")
find_package(Jsoncpp CONFIG)
list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
if(MSVC AND NOT TARGET std::filesystem)
add_library(std::filesystem INTERFACE IMPORTED GLOBAL)
set_property(TARGET std::filesystem APPEND PROPERTY INTERFACE_COMPILE_FEATURES cxx_std_17)
endif()
find_package(Drogon)
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/x86_linux)
endif()
_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
"${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})
find_package(SQLiteCpp CONFIG REQUIRED)
_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(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/CLion2026.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 $<TARGET_FILE:ecap_server> ${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(drogon ${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" # 是否先 cleanON/OFF
"30" # top 数量;空字符串表示 30
)