transm/CMakeLists.txt

105 lines
3.2 KiB
CMake
Raw Normal View History

2024-12-11 08:44:14 +08:00
cmake_minimum_required(VERSION 3.16)
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)
set(COMPILER_ID ${CMAKE_CXX_COMPILER_ID})
2025-01-17 14:06:41 +08:00
if(MSVC)
add_compile_options(/source-charset:utf-8)
endif()
2025-01-17 14:06:41 +08:00
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows")
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)
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()
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()
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
${PROJECT_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE}/
)
2024-12-11 08:44:14 +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)
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(
COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE VERSION_GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE VERSION_GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
configure_file(version.h.in version.h)
message(STATUS "${CMAKE_SYSTEM_NAME} build dir:${PROJECT_BINARY_DIR}")
2024-12-16 14:21:39 +08:00
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_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")
set(ARCH_SUFFIX "win64")
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")
set(ARCH_SUFFIX "win32")
2025-02-14 20:43:37 +08:00
else()
message(WARNING "Unknown target architecture")
endif()
set(CPACK_PACKAGE_INSTALL_DIRECTORY "transm")
2025-02-14 20:43:37 +08:00
elseif(UNIX AND NOT APPLE)
2025-02-14 20:47:45 +08:00
set(CPACK_GENERATOR "DEB;TGZ")
set(ARCH_SUFFIX "amd64")
2025-02-14 20:43:37 +08:00
set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
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()
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-v${PROJECT_VERSION}-${COMPILER_ID}.${ARCH_SUFFIX}")
include(CPack)