优化配置文件
This commit is contained in:
+27
-130
@@ -1,120 +1,36 @@
|
||||
# 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_target_properties(Psc_Core_env PROPERTIES FOLDER "Psc_Core")
|
||||
library_is_installed_with_rely(Psc_Core_dependencies_installed ${Psc_Core_dependencies})
|
||||
if (NOT Psc_Core_dependencies_installed)
|
||||
message(STATUS "Core 依赖未安装,请先构建 Psc_Core_env 目标")
|
||||
return()
|
||||
else ()
|
||||
find_package(spdlog CONFIG REQUIRED)
|
||||
find_package(GTest CONFIG REQUIRED)
|
||||
find_package(magic_enum CONFIG REQUIRED)
|
||||
endif ()
|
||||
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)
|
||||
set(global_include_output_dir ${core_src_dir}/Base)
|
||||
set(global_include_dir ${base_dir}/private_psc_global_include)
|
||||
|
||||
file(GLOB_RECURSE hs ${global_include_dir}/*.h ${global_include_dir}/*.hpp)
|
||||
file(GLOB_RECURSE ss ${global_include_dir}/*.cpp)
|
||||
string(APPEND global_include_h "${global_include_output_dir}/global_include.h")
|
||||
string(APPEND global_include_cpp "${global_include_output_dir}/global_include.cpp")
|
||||
string(APPEND global_include_h_content "#pragma once\n")
|
||||
string(APPEND global_include_cpp_content "#pragma once\n")
|
||||
set(rel_global_include "../../private_psc_global_include")
|
||||
foreach (h IN LISTS hs)
|
||||
file(RELATIVE_PATH rel_h ${global_include_dir} ${h})
|
||||
string(APPEND global_include_h_content "#include \"${rel_global_include}/${rel_h}\"\n")
|
||||
endforeach ()
|
||||
foreach (s IN LISTS ss)
|
||||
file(RELATIVE_PATH rel_s ${global_include_dir} ${s})
|
||||
string(APPEND global_include_cpp_content "#include \"${rel_global_include}/${rel_s}\"\n")
|
||||
endforeach ()
|
||||
file(WRITE ${global_include_h} ${global_include_h_content})
|
||||
file(WRITE ${global_include_cpp} ${global_include_cpp_content})
|
||||
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/3rd/asio/main.cmake)
|
||||
|
||||
|
||||
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/3rd/pfr ${CMAKE_CURRENT_BINARY_DIR}/pfr)
|
||||
|
||||
|
||||
find_package(spdlog CONFIG QUIET)
|
||||
add_library(Psc_Core_Interface INTERFACE)
|
||||
|
||||
|
||||
file(GLOB_RECURSE srcs
|
||||
${core_src_dir}/*.c
|
||||
${core_src_dir}/*.cpp
|
||||
${core_src_dir}/*.hpp
|
||||
${core_src_dir}/*.h
|
||||
)
|
||||
add_library(Psc_Core_Static STATIC ${srcs})
|
||||
target_include_directories(Psc_Core_Static PUBLIC ${CMAKE_CURRENT_LIST_DIR}/src)
|
||||
|
||||
target_precompile_headers(Psc_Core_Static PRIVATE
|
||||
"$<$<COMPILE_LANGUAGE:CXX>:${global_include_output_dir}/global_include.h>"
|
||||
)
|
||||
|
||||
|
||||
if (NOT spdlog_FOUND)
|
||||
set(SPDLOG_BUILD_PIC ON)
|
||||
set(spdlog_name spdlog-1.17.0)
|
||||
set(spdlog_root_dir "${3rd_dir}/spdlog/${spdlog_name}")
|
||||
message(STATUS "spdlog not found, use bundled: ${spdlog_src_dir}")
|
||||
set(SPDLOG_BUILD_EXAMPLE OFF CACHE BOOL "" FORCE)
|
||||
set(SPDLOG_BUILD_EXAMPLE_HO OFF CACHE BOOL "" FORCE)
|
||||
set(SPDLOG_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||
set(SPDLOG_BUILD_TESTS_HO OFF CACHE BOOL "" FORCE)
|
||||
set(SPDLOG_BUILD_BENCH OFF CACHE BOOL "" FORCE)
|
||||
set(SPDLOG_INSTALL ON CACHE BOOL "" FORCE)
|
||||
target_include_directories(Psc_Core_Interface INTERFACE ${spdlog_root_dir}/include)
|
||||
add_subdirectory(${spdlog_root_dir} ${CMAKE_CURRENT_BINARY_DIR}/Psc_Core_spdlog)
|
||||
else ()
|
||||
message(STATUS "Found spdlog: ${spdlog_VERSION}")
|
||||
endif ()
|
||||
target_include_directories(Psc_Core_Interface INTERFACE "${CMAKE_CURRENT_LIST_DIR}")
|
||||
target_include_directories(Psc_Core_Interface INTERFACE "${CMAKE_CURRENT_LIST_DIR}/3rd/ucoro/include")
|
||||
target_include_directories(Psc_Core_Interface INTERFACE "${base_dir}")
|
||||
target_include_directories(Psc_Core_Interface INTERFACE ${3rd_dir}/magic_enum/magic_enum/include)
|
||||
target_compile_definitions(Psc_Core_Interface INTERFACE SPDLOG_COMPILED_LIB)
|
||||
target_compile_definitions(Psc_Core_Interface INTERFACE INCL_EXTRA_HTON_FUNCTIONS)
|
||||
set_target_properties(Psc_Core_Interface PROPERTIES FOLDER "Core")
|
||||
|
||||
# ============================================================
|
||||
# Core compile definitions
|
||||
# ============================================================
|
||||
|
||||
target_compile_definitions(Psc_Core_Interface INTERFACE
|
||||
NOMINMAX
|
||||
WIN32_LEAN_AND_MEAN
|
||||
_USE_MATH_DEFINES
|
||||
set_target_properties(Psc_Core_Interface PROPERTIES FOLDER "Psc_Core")
|
||||
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>"
|
||||
)
|
||||
|
||||
# 如果你的旧代码里还大量使用 #ifdef WIN32,可以临时打开这一行。
|
||||
# 新代码建议统一改成 _WIN32,不建议手动定义 WIN32。
|
||||
# target_compile_definitions(Psc_Core_Interface INTERFACE WIN32)
|
||||
|
||||
|
||||
# ============================================================
|
||||
# Compiler options
|
||||
# ============================================================
|
||||
|
||||
if (MSVC)
|
||||
target_compile_options(Psc_Core_Interface INTERFACE
|
||||
/wd4819
|
||||
/utf-8
|
||||
/Zc:preprocessor
|
||||
/EHsc
|
||||
/bigobj
|
||||
)
|
||||
else ()
|
||||
target_compile_options(Psc_Core_Interface INTERFACE
|
||||
-fvisibility=hidden
|
||||
-fvisibility-inlines-hidden
|
||||
-Wall
|
||||
-Wextra
|
||||
-Wpedantic
|
||||
-Wshadow
|
||||
-Wconversion
|
||||
-Wsign-conversion
|
||||
)
|
||||
endif ()
|
||||
|
||||
|
||||
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
|
||||
@@ -125,9 +41,7 @@ if (WIN32)
|
||||
dbghelp
|
||||
iphlpapi
|
||||
)
|
||||
|
||||
endif ()
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
target_link_libraries(Psc_Core_Static PUBLIC
|
||||
rt
|
||||
@@ -135,39 +49,22 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
pthread
|
||||
)
|
||||
endif ()
|
||||
|
||||
#include("${CMAKE_CURRENT_LIST_DIR}/3rd/ucoro/main.cmake")
|
||||
#if (1)
|
||||
# set(ucoro_dir "${CMAKE_CURRENT_LIST_DIR}/3rd/ucoro")
|
||||
# file(GLOB_RECURSE ucoro_srcs ${ucoro_dir}/*.h ${ucoro_dir}/*.hpp ${ucoro_dir}/*.cpp)
|
||||
# target_compile_definitions(Psc_Core_Interface INTERFACE _USE_GTEST)
|
||||
# target_link_libraries(Psc_Core_Static PUBLIC GTest::gtest GTest::gmock)
|
||||
# target_sources(Psc_Core_Static PUBLIC ${ucoro_srcs})
|
||||
#
|
||||
#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 "Psc_Core")
|
||||
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 "Psc_Core")
|
||||
|
||||
|
||||
get_target_property(_c_launcher Psc_Core_Static C_COMPILER_LAUNCHER)
|
||||
get_target_property(_cxx_launcher Psc_Core_Static CXX_COMPILER_LAUNCHER)
|
||||
message("Psc_Core_Static C_COMPILER_LAUNCHER=${_c_launcher}")
|
||||
message("Psc_Core_Static CXX_COMPILER_LAUNCHER=${_cxx_launcher}")
|
||||
|
||||
Reference in New Issue
Block a user