75 lines
3.1 KiB
CMake
75 lines
3.1 KiB
CMake
# pfr库虽然是cmake构建但是没有安装脚本
|
|
set(Psc_Core_dependencies global::GTest global::spdlog global::magic_enum)
|
|
rcl_add_dependency_action_targets(Psc_Core_env ${Psc_Core_dependencies})
|
|
set(name "Psc_Core")
|
|
set_target_properties(Psc_Core_env PROPERTIES FOLDER ${name})
|
|
|
|
|
|
library_get_missing_with_rely(Psc_Core_dependencies_miss ${Psc_Core_dependencies})
|
|
if (Psc_Core_dependencies_miss)
|
|
rcl_log_append(${CMAKE_CURRENT_LIST_LINE} "[FATAL_ERROR] Psc_Core dependencies are not installed. Build Aethera_Kernel_env first")
|
|
return()
|
|
endif ()
|
|
|
|
find_package(spdlog CONFIG REQUIRED)
|
|
find_package(GTest CONFIG REQUIRED)
|
|
find_package(magic_enum CONFIG REQUIRED)
|
|
|
|
set(base_dir ${CMAKE_CURRENT_LIST_DIR}/src)
|
|
set(3rd_dir ${CMAKE_CURRENT_LIST_DIR}/3rd)
|
|
set(core_src_dir ${base_dir}/Psc_Cpp_Core)
|
|
include(${CMAKE_CURRENT_LIST_DIR}/3rd/asio/main.cmake)
|
|
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/3rd/pfr ${CMAKE_CURRENT_BINARY_DIR}/pfr)
|
|
add_library(Psc_Core_Interface INTERFACE)
|
|
target_include_directories(Psc_Core_Interface INTERFACE "${base_dir}")
|
|
target_include_directories(Psc_Core_Interface INTERFACE ${3rd_dir}/magic_enum/magic_enum/include)
|
|
set_target_properties(Psc_Core_Interface PROPERTIES FOLDER ${name})
|
|
append_glob_source(srcs ${core_src_dir})
|
|
add_library(Psc_Core_Static STATIC ${srcs})
|
|
generate_aggregate_sources(${base_dir}/private_psc_global_include ${core_src_dir}/Base "../../private_psc_global_include" "global_include")
|
|
target_precompile_headers(Psc_Core_Static PRIVATE
|
|
"$<$<COMPILE_LANGUAGE:CXX>:${core_src_dir}/Base/global_include.h>"
|
|
)
|
|
target_include_directories(Psc_Core_Static PUBLIC ${base_dir})
|
|
target_include_directories(Psc_Core_Static PUBLIC ${3rd_dir})
|
|
# ============================================================
|
|
# Platform link libraries
|
|
# ============================================================
|
|
if (WIN32)
|
|
target_link_libraries(Psc_Core_Static PRIVATE
|
|
ole32
|
|
oleaut32
|
|
wbemuuid
|
|
psapi
|
|
shell32
|
|
dbghelp
|
|
iphlpapi
|
|
)
|
|
target_compile_definitions(Psc_Core_Static PUBLIC NOMINMAX)
|
|
endif ()
|
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
target_link_libraries(Psc_Core_Static PUBLIC
|
|
rt
|
|
dl
|
|
pthread
|
|
)
|
|
endif ()
|
|
target_link_libraries(Psc_Core_Static PUBLIC boost_pfr)
|
|
target_link_libraries(Psc_Core_Static PUBLIC Psc_Core_Interface)
|
|
target_link_libraries(Psc_Core_Static PUBLIC spdlog::spdlog)
|
|
target_link_libraries(Psc_Core_Static PUBLIC magic_enum::magic_enum)
|
|
target_link_libraries(Psc_Core_Static PUBLIC asio_object)
|
|
# 主要是magic_enum等头文件
|
|
target_include_directories(Psc_Core_Static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
|
set_target_properties(Psc_Core_Static PROPERTIES
|
|
AUTOMOC OFF
|
|
AUTOUIC OFF
|
|
AUTORCC OFF
|
|
)
|
|
set_property(TARGET Psc_Core_Static PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
set_target_properties(Psc_Core_Static PROPERTIES FOLDER ${name})
|
|
add_executable(Psc_Core_exe ${CMAKE_CURRENT_LIST_DIR}/main.cpp)
|
|
target_link_libraries(Psc_Core_exe PRIVATE Psc_Core_Static)
|
|
set_target_properties(Psc_Core_exe PROPERTIES FOLDER ${name})
|
|
|