diff --git a/main.cmake b/main.cmake index dcd7f83..a8870d7 100644 --- a/main.cmake +++ b/main.cmake @@ -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 - "$<$:${base_dir}/global_include.h>" +target_precompile_headers(Psc_Core_Static PRIVATE + "$<$:${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}")