diff --git a/.gitignore b/.gitignore index eea3363..260619c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -build +buil* .vs .cache cmake-* diff --git a/.vscode/settings.json b/.vscode/settings.json index 1af970f..73f7711 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -27,6 +27,10 @@ "cmake.environment": { "PATH": "${env:PATH};" }, + // "cmake.configureArgs": [ + // "-Wno-dev", + // "-DSYSTEM_XP=ON" + // ], "cmake.options.statusBarVisibility": "visible", "cmake.generator": "Ninja", "C_Cpp.default.compileCommands": "${workspaceRoot}/build/compile_commands.json", diff --git a/CMakeLists.txt b/CMakeLists.txt index 894c380..2d01f06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,24 +1,37 @@ cmake_minimum_required(VERSION 3.16) -project(transm LANGUAGES CXX) +project(transm VERSION 1.2.3 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(COMPILER_ID ${CMAKE_CXX_COMPILER_ID}) if(MSVC) add_compile_options(/source-charset:utf-8) endif() if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows") -message(status "add mingw param.") +message(STATUS "add mingw param.") add_compile_options(-finput-charset=utf-8) add_compile_options(-fexec-charset=gbk) add_compile_options(-Wa,-mbig-obj) +set(COMPILER_ID "mingw") +set(MINGW32_XP_BOOST ON) +add_definitions(-DMINGW32_XP_BOOST) +include(config/MBoost.cmake) endif() +string(TOLOWER ${COMPILER_ID} COMPILER_ID) if(DEFINED IOS_ISH) message(STATUS "INPUT IOS_ISH ${IOS_ISH}") endif() +if(DEFINED MINGW32_XP_BOOST) +message(STATUS "transm use xp defined ${SYSTEM_XP}") +add_definitions(-D_WIN32_WINNT=0x0501) +else() +add_definitions(-D_WIN32_WINNT=0x0601) +endif() + set(CMAKE_DEBUG_POSTFIX "d") set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY @@ -26,7 +39,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ) add_definitions(-DFMT_HEADER_ONLY) -add_definitions(-D_WIN32_WINNT=0x0601) include_directories(3rd) include_directories(.) include_directories(${PROJECT_BINARY_DIR}) @@ -51,13 +63,18 @@ execute_process( OUTPUT_STRIP_TRAILING_WHITESPACE ) configure_file(version.h.in version.h) -message(STATUS "build dir:${PROJECT_BINARY_DIR}") +message(STATUS "${CMAKE_SYSTEM_NAME} build dir:${PROJECT_BINARY_DIR}") install(TARGETS tsc DESTINATION bin) install(TARGETS tss DESTINATION bin) +if (DEFINED MINGW32_XP_BOOST) +install(FILES ${MINGW32_DLLS} DESTINATION bin) +install(FILES ${WIN_XP_COLOR_TOOL} DESTINATION bin) +endif() + +# ********************************************************** pack infomation set(CPACK_PACKAGE_NAME "transm") -set(CPACK_PACKAGE_VERSION "1.2.3") set(CPACK_PACKAGE_CONTACT "taynpg ") set(CPACK_PACKAGE_DESCRIPTION "A simple tool that uses a server (tss) as a relay center to indirectly transfer files between two (or more) clients (tsc).") set(CPACK_PACKAGE_VENDOR "taynpg") @@ -65,13 +82,17 @@ if(WIN32) set(CPACK_NSIS_MODIFY_PATH ON) if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(CPACK_GENERATOR "NSIS64;ZIP") + set(ARCH_SUFFIX "win64") elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) set(CPACK_GENERATOR "NSIS;ZIP") + set(ARCH_SUFFIX "win32") else() message(WARNING "Unknown target architecture") endif() +set(CPACK_PACKAGE_INSTALL_DIRECTORY "transm") elseif(UNIX AND NOT APPLE) set(CPACK_GENERATOR "DEB;TGZ") + set(ARCH_SUFFIX "amd64") set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") set(CPACK_DEBIAN_PACKAGE_SECTION "utils") set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") @@ -79,4 +100,5 @@ elseif(UNIX AND NOT APPLE) elseif(APPLE) set(CPACK_GENERATOR "DragNDrop") endif() +set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-v${PROJECT_VERSION}-${COMPILER_ID}.${ARCH_SUFFIX}") include(CPack) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 2ee6e1f..85d00d2 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -6,6 +6,11 @@ set(CMAKE_CXX_STANDARD 17) if (MSVC) add_compile_options(/source-charset:utf-8) endif() +if(DEFINED MINGW32_XP_BOOST) +message(STATUS "tsc use mingw32 xp boost.") +include_directories(${MBOOST_INCLUDE_DIR}) +link_directories(${MBOOST_LIB_DIR}) +endif() add_executable(tsc main.cpp client.h client.cpp config.h config.cpp) target_link_libraries(tsc PRIVATE trans_net trans_util filecomplete) @@ -14,4 +19,8 @@ target_link_libraries(tsc PRIVATE pthread) endif() if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows") target_link_libraries(tsc PRIVATE ws2_32 wsock32) +endif() +if(DEFINED MINGW32_XP_BOOST) +target_link_directories(tsc PRIVATE ${MBOOST_LIB_DIR}) +target_link_libraries(tsc PRIVATE ${MBOOST_LIBS}) endif() \ No newline at end of file diff --git a/client/client.cpp b/client/client.cpp index 7a8f235..03ca68b 100644 --- a/client/client.cpp +++ b/client/client.cpp @@ -5,7 +5,7 @@ #include #include -#ifdef USE_BOOST_FILESYSTEM +#ifdef MINGW32_XP_BOOST #include namespace fs = boost::filesystem; #else diff --git a/client/config.cpp b/client/config.cpp index 7a68a51..b40525b 100644 --- a/client/config.cpp +++ b/client/config.cpp @@ -1,7 +1,7 @@ #include "config.h" #include -#ifdef USE_BOOST_FILESYSTEM +#ifdef MINGW32_XP_BOOST #include namespace fs = boost::filesystem; #else diff --git a/client/xmake.lua b/client/xmake.lua deleted file mode 100644 index 3ee8c50..0000000 --- a/client/xmake.lua +++ /dev/null @@ -1,26 +0,0 @@ -add_rules("mode.debug", "mode.release") -set_languages("c++17") -add_includedirs(os.scriptdir()) -target("tsc") - add_options("boost") - set_kind("binary") - add_files("*.cpp") - add_deps("ofen") - add_deps("trans_util") - add_deps("trans_net") - add_deps("filecomplete") - - if is_plat("mingw") then - add_links("ws2_32", "wsock32") - end - -option("boost") - set_default(false) - set_showmenu(true) - boost_root_dir = os.getenv("BOOST_HEADER_DIR") - boost_lib_dir = os.getenv("BOOST_LIB_DIR") - boost_libs = os.getenv("BOOST_LIBS") - add_includedirs(boost_root_dir) - add_defines("USE_BOOST_FILESYSTEM") - add_linkdirs(boost_lib_dir) - add_links(boost_libs) \ No newline at end of file diff --git a/config/MBoost.cmake b/config/MBoost.cmake new file mode 100644 index 0000000..8e3154e --- /dev/null +++ b/config/MBoost.cmake @@ -0,0 +1,13 @@ +set(MBOOST_INCLUDE_DIR "C:/boost/include/boost-1_83") +set(MBOOST_LIB_DIR "C:/boost/lib") +set(MBOOST_LIBS "boost_filesystem-mgw7-mt-x32-1_83") +get_filename_component(CXX_COMPILER_PATH ${CMAKE_CXX_COMPILER} DIRECTORY) +set(MINGW32_DLLS +"${CXX_COMPILER_PATH}/libgcc_s_dw2-1.dll" +"${CXX_COMPILER_PATH}/libstdc++-6.dll" +"${CXX_COMPILER_PATH}/libwinpthread-1.dll" +) +set(WIN_XP_COLOR_TOOL +"C:/xp/ansicon.exe" +"C:/xp/ANSI32.dll" +) \ No newline at end of file diff --git a/filecomplete b/filecomplete index 1106518..a7c6434 160000 --- a/filecomplete +++ b/filecomplete @@ -1 +1 @@ -Subproject commit 1106518755bc91afb0a110a1b589eca031d980e2 +Subproject commit a7c6434a7c333a19727aeab8212d20604426b701 diff --git a/net/xmake.lua b/net/xmake.lua deleted file mode 100644 index 9a76016..0000000 --- a/net/xmake.lua +++ /dev/null @@ -1,15 +0,0 @@ -add_rules("mode.debug", "mode.release") -set_languages("c++17") -if is_mode("debug") then - set_suffixname("d") -end -add_includedirs(os.scriptdir(), {public = true}) -target("trans_net") - set_kind("static") - add_files("*.cpp") - add_deps("ofen") - add_deps("trans_util") - - if is_plat("mingw") then - add_links("ws2_32", "wsock32") - end \ No newline at end of file diff --git a/ofen b/ofen index 44c536c..36e05d2 160000 --- a/ofen +++ b/ofen @@ -1 +1 @@ -Subproject commit 44c536c583948ac6768fa8b536b9a6222c845bf7 +Subproject commit 36e05d261821048a4c2fec1042434dd2dfc9b6de diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt index 9c06ea2..aa3bc8e 100644 --- a/server/CMakeLists.txt +++ b/server/CMakeLists.txt @@ -6,9 +6,17 @@ set(CMAKE_CXX_STANDARD 17) if (MSVC) add_compile_options(/source-charset:utf-8) endif() +if(DEFINED MINGW32_XP_BOOST) +message(STATUS "tss use mingw32 xp boost.") +include_directories(${MBOOST_INCLUDE_DIR}) +endif() add_executable(tss main.cpp server.h server.cpp) target_link_libraries(tss PRIVATE trans_net trans_util) +if(DEFINED MINGW32_XP_BOOST) +target_link_directories(tss PRIVATE ${MBOOST_LIB_DIR}) +target_link_libraries(tss PRIVATE ${MBOOST_LIBS}) +endif() if (UNIX) target_link_libraries(tss PRIVATE pthread) endif() diff --git a/server/xmake.lua b/server/xmake.lua deleted file mode 100644 index 87b3791..0000000 --- a/server/xmake.lua +++ /dev/null @@ -1,13 +0,0 @@ -add_rules("mode.debug", "mode.release") -set_languages("c++17") -add_includedirs(os.scriptdir()) -target("tss") - set_kind("binary") - add_files("*.cpp") - add_deps("ofen") - add_deps("trans_util") - add_deps("trans_net") - - if is_plat("mingw") then - add_links("ws2_32", "wsock32") - end \ No newline at end of file diff --git a/util/xmake.lua b/util/xmake.lua deleted file mode 100644 index 0e597a6..0000000 --- a/util/xmake.lua +++ /dev/null @@ -1,14 +0,0 @@ -add_rules("mode.debug", "mode.release") -set_languages("c++17") -if is_plat("windows") then - add_cxxflags("/source-charset:utf-8") -end -if is_mode("debug") then - set_suffixname("d") -end -add_includedirs(os.scriptdir(), {public = true}) -target("trans_util") - set_kind("static") - add_files("*.cpp") - add_deps("ofen") - add_deps("filecomplete") \ No newline at end of file diff --git a/xmake.lua b/xmake.lua deleted file mode 100644 index abd95fe..0000000 --- a/xmake.lua +++ /dev/null @@ -1,22 +0,0 @@ -add_rules("mode.debug", "mode.release") -set_languages("c++17") -if is_plat("windows") then - add_cxxflags("/source-charset:utf-8") -end -if is_plat("mingw") then - add_cxxflags("-Wno-unused-variable -finput-charset=utf-8 -fexec-charset=gbk") -end -if has_config("xp") then - add_defines("_WIN32_WINNT=0x0501") -else - add_defines("_WIN32_WINNT=0x0601") -end -add_defines("FMT_HEADER_ONLY") -add_includedirs("$(projectdir)/3rd", {public = true}) -add_includedirs("$(projectdir)/build", {public = true}) -includes("util", "ofen", "net", "server", "client", "filecomplete") -add_configfiles("config.h.in", {filename = "version.h"}) - -option("xp") - set_default(false) - set_showmenu(true) \ No newline at end of file