From b7b63f8f42fd703048c20e7a3b83a953c891bfa4 Mon Sep 17 00:00:00 2001 From: taynpg Date: Sun, 16 Feb 2025 15:10:53 +0800 Subject: [PATCH] =?UTF-8?q?compile=EF=BC=9A=E6=9B=B4=E6=94=B9=E6=89=93?= =?UTF-8?q?=E5=8C=85=E8=BE=93=E5=87=BA=E5=90=8D=E7=A7=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 13 ++++++++++--- config/MSystem.cmake | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 config/MSystem.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 70ebde5..b64fe8f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,9 +4,10 @@ project(transm VERSION 1.2.3 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +include(config/MSystem.cmake) set(PROJECT_URL "https://www.sinxmiao.cn/taynpg/transm") # 将 CMAKE_SYSTEM_PROCESSOR 转换为小写 -string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" CMAKE_SYSTEM_PROCESSOR_LOWER) +# 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) @@ -77,6 +78,13 @@ install(FILES ${WIN_XP_COLOR_TOOL} DESTINATION bin) endif() # ********************************************************** pack infomation +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(ARCH_BIT "64Bit") +elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(ARCH_BIT "32Bit") +else() + message(FATAL_ERROR "Unknown target architecture") +endif() set(CPACK_PACKAGE_NAME "transm") set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}") set(CPACK_PACKAGE_CONTACT "taynpg ") @@ -101,6 +109,5 @@ elseif(UNIX AND NOT APPLE) elseif(APPLE) set(CPACK_GENERATOR "DragNDrop") endif() -# 这里的打包信息,具体只在 "本机生成本机程序" 时才是正确的,如果是交叉编译器,或者使用 -m32 等改变目标架构,这里的信息是不准确的 -set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-v${PROJECT_VERSION}-${COMPILER_ID}.${CMAKE_SYSTEM_PROCESSOR_LOWER}") +set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-v${PROJECT_VERSION}-${COMPILER_ID}.${SYSTEM_ARCH}.${ARCH_BIT}") include(CPack) diff --git a/config/MSystem.cmake b/config/MSystem.cmake new file mode 100644 index 0000000..6c719c1 --- /dev/null +++ b/config/MSystem.cmake @@ -0,0 +1,43 @@ +# 获取一些常见的本机系统(注意是本机,非交叉编译器的信息)信息 +if (UNIX) +execute_process( + COMMAND uname -a + OUTPUT_VARIABLE UNAME_OUTPUT + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +if(UNAME_OUTPUT MATCHES "x86_64") + set(SYSTEM_ARCH "x86_64") +elseif(UNAME_OUTPUT MATCHES "aarch64") + set(SYSTEM_ARCH "aarch64") +elseif(UNAME_OUTPUT MATCHES "armv7l") + set(SYSTEM_ARCH "armv7l") +elseif(UNAME_OUTPUT MATCHES "i686") + set(SYSTEM_ARCH "i686") +elseif(UNAME_OUTPUT MATCHES "riscv64") + set(SYSTEM_ARCH "riscv64") +else() + set(SYSTEM_ARCH "unknown") +endif() + +elseif (WIN32) + # 先调用 ver 命令 + execute_process(COMMAND ver + OUTPUT_VARIABLE VER_OUTPUT + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(VER_OUTPUT MATCHES "XP") + set(SYSTEM_ARCH "x86") + else() + execute_process(COMMAND wmic os get osarchitecture + OUTPUT_VARIABLE WMIC_OUTPUT + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(WMIC_OUTPUT MATCHES "64") + set(SYSTEM_ARCH "x86_64") + else() + set(SYSTEM_ARCH "x86") + endif() + endif() +else() +message(FATAL_ERROR "unknow system type.") +endif() +message(STATUS "SYSTEM_ARCH: ${SYSTEM_ARCH}") \ No newline at end of file