diff --git a/.gitignore b/.gitignore index 260619c..a07d994 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ cmake-* .xmake compile_commands.json out +xpbuild \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d01f06..247648e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,8 @@ project(transm VERSION 1.2.3 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +# 将 CMAKE_SYSTEM_PROCESSOR 转换为小写 +string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" CMAKE_SYSTEM_PROCESSOR_LOWER) set(COMPILER_ID ${CMAKE_CXX_COMPILER_ID}) if(MSVC) add_compile_options(/source-charset:utf-8) @@ -75,6 +77,7 @@ endif() # ********************************************************** pack infomation set(CPACK_PACKAGE_NAME "transm") +set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}") 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") @@ -82,23 +85,21 @@ 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") + message(FATAL_ERROR "Unknown target architecture") endif() +set(CPACK_NSIS_INSTALL_ROOT "$PROFILE") 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_GENERATOR "DEB;TGZ;RPM") set(CPACK_DEBIAN_PACKAGE_SECTION "utils") set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional") set(CPACK_DEBIAN_PACKAGE_MAINTAINER "taynpg ") elseif(APPLE) set(CPACK_GENERATOR "DragNDrop") endif() -set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-v${PROJECT_VERSION}-${COMPILER_ID}.${ARCH_SUFFIX}") +# 这里的打包信息,具体只在 "本机生成本机程序" 时才是正确的,如果是交叉编译器,或者使用 -m32 等改变目标架构,这里的信息是不准确的 +set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-v${PROJECT_VERSION}-${COMPILER_ID}.${CMAKE_SYSTEM_PROCESSOR_LOWER}") include(CPack) diff --git a/README.md b/README.md index 7a25c47..ead74de 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ 低版本编译器,可选择`boost`+`c++11`标准组合。 +**注**:使用安装包的用户,如果想变更安装位置的话,请先卸载旧版本。 + # 一、简要介绍 | 主要功能序号 | 简介 | @@ -128,11 +130,15 @@ cmake:`cmake -Bbuild -DCMAKE_BUILD_TYPE=Release`、`cmake --build build --conf ### 前提 -- `cmake`支持windows XP的版本过低,故使用`xmake`。 - 支持`XP`的`msvc`编译器不支持新`C++语法标准`,故使用`mingw32`编译器。 - 支持`xp`的`mingw32`编译器的`c++17`标准的`filesystem`模块还是实验性质且有编译`BUG`,故使用`boost-filesystem`。 +- 需要一个最低`3.16`版本的`cmake`。 ### 编译 -- 构建选项:`xmake f -p mingw -a i386 --boost=y --xp=y` -- 环境变量定义:`BOOST_HEADER_DIR`、`BOOST_LIB_DIR`、`BOOST_LIBS`。 +请参照:`xp_build.bat`。 + + +# 其他 + +- `xp`系统下,安装后(或者添加环境变量后),如果时第一次使用请先执行`ansicon -i`以支持彩色显示,后续则不用再次执行(如果没有卸载过或变更安装位置)。 \ No newline at end of file diff --git a/xp_build.bat b/xp_build.bat index 2b4835c..9267f2f 100644 --- a/xp_build.bat +++ b/xp_build.bat @@ -1,24 +1,10 @@ @echo off -echo Setting environment variables... -set BOOST_HEADER_DIR=C:\boost\include\boost-1_83 -set BOOST_LIB_DIR=C:\boost\lib -set BOOST_LIBS=boost_filesystem-mgw7-mt-x32-1_83 - -echo Configuring xmake... -xmake f -p mingw -a i386 --boost=y --xp=y +cmake -Bxpbuild -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release +cd xpbuild +cpack if %errorlevel% neq 0 ( - echo Error: xmake configuration failed. - pause - exit /b 1 -) -echo BOOST_HEADER_DIR=%BOOST_HEADER_DIR% -echo BOOST_LIB_DIR=%BOOST_LIB_DIR% -echo BOOST_LIBS=%BOOST_LIBS% -echo Building project with xmake... -xmake -if %errorlevel% neq 0 ( - echo Error: xmake build failed. + echo Error: cmake build failed. pause exit /b 1 )