2024-12-11 08:44:14 +08:00
cmake_minimum_required ( VERSION 3.16 )
2025-04-29 11:07:43 +08:00
project ( transm VERSION 1.5.2 LANGUAGES CXX )
2024-12-11 08:44:14 +08:00
set ( CMAKE_CXX_STANDARD 17 )
set ( CMAKE_CXX_STANDARD_REQUIRED ON )
2025-02-16 15:10:53 +08:00
include ( config/MSystem.cmake )
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 转换为小写
2025-02-16 15:10:53 +08:00
# 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 )
2025-04-15 08:48:41 +08:00
add_definitions ( -D_CRT_SECURE_NO_WARNINGS )
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" )
2025-02-18 23:33:21 +08:00
endif ( )
if ( DEFINED USE_BOOST )
message ( STATUS "use boost library ${USE_BOOST}" )
add_definitions ( -DUSE_BOOST )
2025-02-15 23:34:27 +08:00
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-18 23:33:21 +08:00
if ( DEFINED XP_SYSTEM )
message ( STATUS "transm use xp defined ${XP_SYSTEM}" )
2025-02-15 23:34:27 +08:00
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-04-16 22:19:49 +08:00
if ( DEFINED GRAB_CRASH )
message ( STATUS "GRAB_CRASH ${GRAB_CRASH}" )
add_subdirectory ( crashelper/crashelper )
add_definitions ( -DGRAB_CRASH )
endif ( )
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 )
2025-04-08 16:24:01 +08:00
add_subdirectory ( tinyaes )
2025-04-29 11:40:13 +08:00
if ( CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows" )
message ( STATUS "tss-http can't support mingw, will not compile." )
else ( )
2025-04-29 11:07:43 +08:00
add_subdirectory ( http-server )
2025-04-29 11:40:13 +08:00
endif ( )
2024-12-11 10:22:14 +08:00
2025-04-08 20:01:09 +08:00
if ( DEFINED USE_TRANSM_TEST )
message ( STATUS "USE USE_TRANSM_TEST ${USE_TRANSM_TEST}" )
2025-04-13 00:53:52 +08:00
add_definitions ( -DUSE_TRANSM_TEST )
2025-04-12 21:58:53 +08:00
include ( CTest )
2025-04-08 20:01:09 +08:00
add_subdirectory ( test )
endif ( )
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}" )
2025-02-16 15:19:52 +08:00
message ( STATUS "VERSION_GIT_BRANCH: ${VERSION_GIT_BRANCH}" )
message ( STATUS "VERSION_GIT_HASH: ${VERSION_GIT_HASH}" )
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-04-29 11:40:13 +08:00
if ( CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows" )
message ( STATUS "tss-http can't support mingw, will not pack." )
else ( )
2025-04-29 11:07:43 +08:00
install ( TARGETS tss-http DESTINATION bin )
2025-04-29 11:40:13 +08:00
endif ( )
2025-02-14 09:40:08 +08:00
2025-02-18 23:33:21 +08:00
if ( DEFINED USE_BOOST )
2025-02-15 23:34:27 +08:00
install ( FILES ${ MINGW32_DLLS } DESTINATION bin )
endif ( )
2025-03-31 13:58:49 +08:00
if ( DEFINED USE_GUI )
message ( STATUS "USE GUI ${USE_GUI}" )
2025-04-05 22:57:43 +08:00
#add_subdirectory(gui)
2025-03-31 13:58:49 +08:00
endif ( )
2025-02-15 23:34:27 +08:00
# ********************************************************** pack infomation
2025-02-16 15:10:53 +08:00
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 ( )
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 15:41:51 +08:00
set ( CPACK_GENERATOR "DEB;TGZ" )
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 15:10:53 +08:00
set ( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-v${PROJECT_VERSION}-${COMPILER_ID}.${SYSTEM_ARCH}.${ARCH_BIT}" )
2025-02-14 09:40:08 +08:00
include ( CPack )