2024-12-11 08:44:14 +08:00
cmake_minimum_required ( VERSION 3.16 )
2025-02-15 23:34:27 +08:00
project ( transm VERSION 1.2.3 LANGUAGES CXX )
2024-12-11 08:44:14 +08:00
set ( CMAKE_CXX_STANDARD 17 )
set ( CMAKE_CXX_STANDARD_REQUIRED ON )
2025-02-16 14:58:03 +08:00
set ( PROJECT_URL "https://www.sinxmiao.cn/taynpg/transm" )
2025-02-16 13:07:11 +08:00
# 将 CMAKE_SYSTEM_PROCESSOR 转换为小写
string ( TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" CMAKE_SYSTEM_PROCESSOR_LOWER )
2025-02-15 23:34:27 +08:00
set ( COMPILER_ID ${ CMAKE_CXX_COMPILER_ID } )
2025-01-17 14:06:41 +08:00
if ( MSVC )
add_compile_options ( /source-charset:utf-8 )
2024-12-12 22:43:24 +08:00
endif ( )
2025-01-17 14:06:41 +08:00
if ( CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows" )
2025-02-15 23:34:27 +08:00
message ( STATUS "add mingw param." )
2025-01-17 14:06:41 +08:00
add_compile_options ( -finput-charset=utf-8 )
add_compile_options ( -fexec-charset=gbk )
add_compile_options ( -Wa,-mbig-obj )
2025-02-15 23:34:27 +08:00
set ( COMPILER_ID "mingw" )
set ( MINGW32_XP_BOOST ON )
add_definitions ( -DMINGW32_XP_BOOST )
include ( config/MBoost.cmake )
2024-12-24 12:47:12 +08:00
endif ( )
2025-02-15 23:34:27 +08:00
string ( TOLOWER ${ COMPILER_ID } COMPILER_ID )
2025-01-10 15:34:10 +08:00
if ( DEFINED IOS_ISH )
2025-01-17 14:06:41 +08:00
message ( STATUS "INPUT IOS_ISH ${IOS_ISH}" )
2025-01-10 15:34:10 +08:00
endif ( )
2025-02-15 23:34:27 +08:00
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 ( )
2024-12-11 10:22:14 +08:00
set ( CMAKE_DEBUG_POSTFIX "d" )
2024-12-11 08:44:14 +08:00
set ( LIBRARY_OUTPUT_PATH ${ PROJECT_BINARY_DIR } /lib/ ${ CMAKE_BUILD_TYPE } )
2025-01-17 14:06:41 +08:00
set ( CMAKE_RUNTIME_OUTPUT_DIRECTORY
$ { P R O J E C T _ B I N A R Y _ D I R } / b i n / $ { C M A K E _ B U I L D _ T Y P E } /
)
2024-12-11 08:44:14 +08:00
2025-01-21 14:39:38 +08:00
add_definitions ( -DFMT_HEADER_ONLY )
2024-12-11 08:44:14 +08:00
include_directories ( 3rd )
2024-12-11 10:22:14 +08:00
include_directories ( . )
2025-01-17 14:06:41 +08:00
include_directories ( ${ PROJECT_BINARY_DIR } )
2024-12-11 10:22:14 +08:00
add_subdirectory ( ofen )
add_subdirectory ( net )
add_subdirectory ( util )
2024-12-11 08:44:14 +08:00
add_subdirectory ( server )
2024-12-11 10:22:14 +08:00
add_subdirectory ( client )
2025-01-09 16:50:11 +08:00
add_subdirectory ( filecomplete )
2024-12-11 10:22:14 +08:00
2024-12-16 14:21:39 +08:00
string ( TIMESTAMP VERSION_BUILD_DATE "%Y-%m-%d %H:%M" )
execute_process (
C O M M A N D g i t r e v - p a r s e - - s h o r t H E A D
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
O U T P U T _ V A R I A B L E V E R S I O N _ G I T _ H A S H
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E
)
execute_process (
C O M M A N D g i t r e v - p a r s e - - a b b r e v - r e f H E A D
W O R K I N G _ D I R E C T O R Y $ { C M A K E _ S O U R C E _ D I R }
O U T P U T _ V A R I A B L E V E R S I O N _ G I T _ B R A N C H
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E
)
configure_file ( version.h.in version.h )
2025-02-15 23:34:27 +08:00
message ( STATUS "${CMAKE_SYSTEM_NAME} build dir:${PROJECT_BINARY_DIR}" )
2024-12-16 14:21:39 +08:00
2025-02-14 09:40:08 +08:00
install ( TARGETS tsc DESTINATION bin )
install ( TARGETS tss DESTINATION bin )
2025-02-15 23:34:27 +08:00
if ( DEFINED MINGW32_XP_BOOST )
install ( FILES ${ MINGW32_DLLS } DESTINATION bin )
install ( FILES ${ WIN_XP_COLOR_TOOL } DESTINATION bin )
endif ( )
# ********************************************************** pack infomation
2025-02-14 09:40:08 +08:00
set ( CPACK_PACKAGE_NAME "transm" )
2025-02-16 13:07:11 +08:00
set ( CPACK_PACKAGE_VERSION "${PROJECT_VERSION}" )
2025-02-14 09:40:08 +08:00
set ( CPACK_PACKAGE_CONTACT "taynpg <taynpg@163.com>" )
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" )
2025-02-14 20:43:37 +08:00
if ( WIN32 )
set ( CPACK_NSIS_MODIFY_PATH ON )
if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
2025-02-14 20:47:45 +08:00
set ( CPACK_GENERATOR "NSIS64;ZIP" )
2025-02-14 20:43:37 +08:00
elseif ( CMAKE_SIZEOF_VOID_P EQUAL 4 )
2025-02-14 20:47:45 +08:00
set ( CPACK_GENERATOR "NSIS;ZIP" )
2025-02-14 20:43:37 +08:00
else ( )
2025-02-16 13:07:11 +08:00
message ( FATAL_ERROR "Unknown target architecture" )
2025-02-14 20:43:37 +08:00
endif ( )
2025-02-16 13:07:11 +08:00
set ( CPACK_NSIS_INSTALL_ROOT "$PROFILE" )
2025-02-15 23:34:27 +08:00
set ( CPACK_PACKAGE_INSTALL_DIRECTORY "transm" )
2025-02-14 20:43:37 +08:00
elseif ( UNIX AND NOT APPLE )
2025-02-16 13:07:11 +08:00
set ( CPACK_GENERATOR "DEB;TGZ;RPM" )
2025-02-14 20:43:37 +08:00
set ( CPACK_DEBIAN_PACKAGE_SECTION "utils" )
set ( CPACK_DEBIAN_PACKAGE_PRIORITY "optional" )
set ( CPACK_DEBIAN_PACKAGE_MAINTAINER "taynpg <taynpg@163.com>" )
elseif ( APPLE )
set ( CPACK_GENERATOR "DragNDrop" )
endif ( )
2025-02-16 13:07:11 +08:00
# 这里的打包信息,具体只在 "本机生成本机程序" 时才是正确的,如果是交叉编译器,或者使用 -m32 等改变目标架构,这里的信息是不准确的
set ( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-v${PROJECT_VERSION}-${COMPILER_ID}.${CMAKE_SYSTEM_PROCESSOR_LOWER}" )
2025-02-14 09:40:08 +08:00
include ( CPack )