隔离防止重命名

This commit is contained in:
2026-08-01 09:54:08 +08:00
parent b14a42d4c8
commit cbd9c254de
+46 -82
View File
@@ -1,49 +1,16 @@
if (WIN32)
if (MSVC)
set(EXPORT_ATTR "__declspec(dllexport)")
set(IMPORT_ATTR "__declspec(dllimport)")
set(LOCAL_ATTR "")
set(COMPILER_NAME "MSVC")
elseif (MINGW)
set(EXPORT_ATTR "__attribute__((dllexport))")
set(IMPORT_ATTR "__attribute__((dllimport))")
set(LOCAL_ATTR "")
set(COMPILER_NAME "MinGW")
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(EXPORT_ATTR "__attribute__((dllexport))")
set(IMPORT_ATTR "__attribute__((dllimport))")
set(LOCAL_ATTR "")
set(COMPILER_NAME "Clang on Windows")
else ()
set(EXPORT_ATTR "__declspec(dllexport)")
set(IMPORT_ATTR "__declspec(dllimport)")
set(LOCAL_ATTR "")
set(COMPILER_NAME "${CMAKE_CXX_COMPILER_ID} on Windows")
endif ()
else ()
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
set(EXPORT_ATTR "__attribute__((visibility(\"default\")))")
set(IMPORT_ATTR "__attribute__((visibility(\"default\")))")
set(LOCAL_ATTR "__attribute__((visibility(\"hidden\")))")
set(COMPILER_NAME "${CMAKE_CXX_COMPILER_ID}")
else ()
set(EXPORT_ATTR "")
set(IMPORT_ATTR "")
set(LOCAL_ATTR "")
set(COMPILER_NAME "${CMAKE_CXX_COMPILER_ID}")
endif ()
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)
set(global_include_dir ${CMAKE_CURRENT_LIST_DIR}/psc_global_include)
set(base_dir ${CMAKE_CURRENT_LIST_DIR}/Core/Base)
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 "${base_dir}/global_include.h")
string(APPEND global_include_cpp "${base_dir}/global_include.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 "../../psc_global_include")
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")
@@ -62,24 +29,21 @@ include(${CMAKE_CURRENT_LIST_DIR}/3rd/asio/main.cmake)
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/3rd/pfr ${CMAKE_CURRENT_BINARY_DIR}/pfr)
set(3rd_dir ${CMAKE_CURRENT_LIST_DIR}/3rd)
set(src_dir ${CMAKE_CURRENT_LIST_DIR}/Core)
find_package(spdlog CONFIG QUIET)
add_library(Core_Interface INTERFACE)
add_library(Psc_Core_Interface INTERFACE)
file(GLOB_RECURSE srcs
${src_dir}/*.c
${src_dir}/*.cpp
${src_dir}/*.hpp
${src_dir}/*.h
${core_src_dir}/*.c
${core_src_dir}/*.cpp
${core_src_dir}/*.hpp
${core_src_dir}/*.h
)
add_library(Core_Static STATIC ${srcs})
add_library(Psc_Core_Static STATIC ${srcs})
target_include_directories(Psc_Core_Static PUBLIC ${CMAKE_CURRENT_LIST_DIR}/src)
target_precompile_headers(Core_Static PRIVATE
"$<$<COMPILE_LANGUAGE:CXX>:${base_dir}/global_include.h>"
target_precompile_headers(Psc_Core_Static PRIVATE
"$<$<COMPILE_LANGUAGE:CXX>:${global_include_output_dir}/global_include.h>"
)
@@ -94,23 +58,23 @@ if (NOT spdlog_FOUND)
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(Core_Interface INTERFACE ${spdlog_root_dir}/include)
add_subdirectory(${spdlog_root_dir} ${CMAKE_CURRENT_BINARY_DIR}/Core_spdlog)
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(Core_Interface INTERFACE "${CMAKE_CURRENT_LIST_DIR}")
target_include_directories(Core_Interface INTERFACE "${CMAKE_CURRENT_LIST_DIR}/3rd/ucoro/include")
target_include_directories(Core_Interface INTERFACE ${3rd_dir}/magic_enum/magic_enum/include)
target_compile_definitions(Core_Interface INTERFACE SPDLOG_COMPILED_LIB)
target_compile_definitions(Core_Interface INTERFACE INCL_EXTRA_HTON_FUNCTIONS)
set_target_properties(Core_Interface PROPERTIES FOLDER "Core")
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 ${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(Core_Interface INTERFACE
target_compile_definitions(Psc_Core_Interface INTERFACE
NOMINMAX
WIN32_LEAN_AND_MEAN
_USE_MATH_DEFINES
@@ -118,7 +82,7 @@ target_compile_definitions(Core_Interface INTERFACE
# 如果你的旧代码里还大量使用 #ifdef WIN32,可以临时打开这一行。
# 新代码建议统一改成 _WIN32,不建议手动定义 WIN32。
# target_compile_definitions(Core_Interface INTERFACE WIN32)
# target_compile_definitions(Psc_Core_Interface INTERFACE WIN32)
# ============================================================
@@ -126,7 +90,7 @@ target_compile_definitions(Core_Interface INTERFACE
# ============================================================
if (MSVC)
target_compile_options(Core_Interface INTERFACE
target_compile_options(Psc_Core_Interface INTERFACE
/wd4819
/utf-8
/Zc:preprocessor
@@ -134,7 +98,7 @@ if (MSVC)
/bigobj
)
else ()
target_compile_options(Core_Interface INTERFACE
target_compile_options(Psc_Core_Interface INTERFACE
-fvisibility=hidden
-fvisibility-inlines-hidden
-Wall
@@ -152,7 +116,7 @@ endif ()
# ============================================================
if (WIN32)
target_link_libraries(Core_Static PRIVATE
target_link_libraries(Psc_Core_Static PRIVATE
ole32
oleaut32
wbemuuid
@@ -165,7 +129,7 @@ if (WIN32)
endif ()
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
target_link_libraries(Core_Static PUBLIC
target_link_libraries(Psc_Core_Static PUBLIC
rt
dl
pthread
@@ -176,34 +140,34 @@ endif ()
#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(Core_Interface INTERFACE _USE_GTEST)
# target_link_libraries(Core_Static PUBLIC GTest::gtest GTest::gmock)
# target_sources(Core_Static PUBLIC ${ucoro_srcs})
# 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(Core_Static PUBLIC boost_pfr)
target_link_libraries(Psc_Core_Static PUBLIC boost_pfr)
target_link_libraries(Core_Static PUBLIC Core_Interface)
target_link_libraries(Core_Static PUBLIC spdlog::spdlog)
target_link_libraries(Core_Static PUBLIC asio_object)
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 asio_object)
set_target_properties(Core_Static PROPERTIES
set_target_properties(Psc_Core_Static PROPERTIES
AUTOMOC OFF
AUTOUIC OFF
AUTORCC OFF
)
set_property(TARGET Core_Static PROPERTY POSITION_INDEPENDENT_CODE ON)
set_property(TARGET Psc_Core_Static PROPERTY POSITION_INDEPENDENT_CODE ON)
add_executable(Core_exe ${CMAKE_CURRENT_LIST_DIR}/main.cpp)
target_link_libraries(Core_exe PRIVATE Core_Static)
add_executable(Psc_Core_exe ${CMAKE_CURRENT_LIST_DIR}/main.cpp)
target_link_libraries(Psc_Core_exe PRIVATE Psc_Core_Static)
get_target_property(_c_launcher Core_Static C_COMPILER_LAUNCHER)
get_target_property(_cxx_launcher Core_Static CXX_COMPILER_LAUNCHER)
message("Core_Static C_COMPILER_LAUNCHER=${_c_launcher}")
message("Core_Static CXX_COMPILER_LAUNCHER=${_cxx_launcher}")
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}")