151 lines
5.6 KiB
CMake
151 lines
5.6 KiB
CMake
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" # 是否先 clean:ON/OFF
|
||
"30" # top 数量;空字符串表示 30
|
||
)
|
||
|