mirror of
https://github.com/x-tools-author/x-tools.git
synced 2025-09-15 15:28:40 +08:00
129 lines
4.5 KiB
CMake
129 lines
4.5 KiB
CMake
add_compile_definitions(X_TOOLS_AUTHOR="x-tools-author")
|
|
add_compile_definitions(X_TOOLS_EDITION="beta1")
|
|
add_compile_definitions(X_TOOLS_VERSION="5.1.0")
|
|
add_compile_definitions(X_TOOLS_DEFAULT_APP_STYLE="Fusion")
|
|
add_compile_definitions(X_TOOLS_CLEAR_MESSAGE_INTERVAL=8000)
|
|
add_compile_definitions(X_TOOLS_AUTHOR_EMAIL="x-tools@outlook.com")
|
|
add_compile_definitions(X_TOOLS_GITEE_REPOSITORY_URL="https://gitee.com/x-tools-author/x-tools")
|
|
add_compile_definitions(X_TOOLS_GITHUB_REPOSITORY_URL="https://github.com/x-tools-author/x-tools")
|
|
|
|
set(X_TOOLS_BINARY_DIR ${CMAKE_BINARY_DIR}/assets)
|
|
|
|
# Set the suffix of the library.
|
|
if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
|
|
set(X_TOOLS_FILE_SUFFIX "")
|
|
else()
|
|
set(X_TOOLS_FILE_SUFFIX "d")
|
|
endif()
|
|
|
|
# Unzip file and import it as a sub module.
|
|
function(x_tools_add_third_party zip_file_name_without_suffix)
|
|
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf ${zip_file_name_without_suffix}.zip
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty)
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/${zip_file_name_without_suffix})
|
|
endfunction()
|
|
|
|
function(x_tools_copy_glog target)
|
|
if(${BUILD_SHARED_LIBS})
|
|
add_custom_command(
|
|
TARGET ${target}
|
|
POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:glog::glog>
|
|
"${X_TOOLS_BINARY_DIR}/${target}/$<TARGET_FILE_NAME:glog::glog>")
|
|
endif()
|
|
endfunction()
|
|
|
|
# Add executable. It can be used by Qt5 and Qt6.
|
|
function(x_tools_add_executable target sources)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${X_TOOLS_BINARY_DIR}/${target}")
|
|
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
|
qt_add_executable(${target} MANUAL_FINALIZATION)
|
|
if(${target} STREQUAL "xTools")
|
|
set_property(
|
|
TARGET ${target}
|
|
APPEND
|
|
PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/android)
|
|
endif()
|
|
else()
|
|
if(ANDROID)
|
|
add_library(${target} SHARED)
|
|
else()
|
|
add_executable(${target})
|
|
endif()
|
|
endif()
|
|
|
|
set(INDEX 0)
|
|
while(INDEX LESS ${ARGC})
|
|
math(EXPR INDEX "${INDEX} + 1")
|
|
target_sources(${target} PRIVATE ${ARGV${INDEX}})
|
|
endwhile()
|
|
|
|
if(ANDROID)
|
|
add_custom_command(
|
|
TARGET ${target}
|
|
POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE:${target}>"
|
|
"${CMAKE_BINARY_DIR}/android-build/libs/${ANDROID_ABI}/$<TARGET_FILE_NAME:${target}>")
|
|
endif()
|
|
|
|
x_tools_copy_glog(${target})
|
|
x_tools_set_target_properties(${target})
|
|
|
|
if(QT_VERSION_MAJOR EQUAL 6)
|
|
qt_finalize_executable(${target})
|
|
endif()
|
|
endfunction()
|
|
|
|
function(x_tools_set_target_properties target)
|
|
if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
|
|
set_target_properties(
|
|
${target}
|
|
PROPERTIES ${BUNDLE_ID_OPTION} MACOSX_BUNDLE_BUNDLE_VERSION
|
|
${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING
|
|
${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} MACOSX_BUNDLE
|
|
TRUE WIN32_EXECUTABLE
|
|
TRUE)
|
|
else()
|
|
set_target_properties(
|
|
${target}
|
|
PROPERTIES ${BUNDLE_ID_OPTION} MACOSX_BUNDLE_BUNDLE_VERSION
|
|
${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING
|
|
${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} MACOSX_BUNDLE
|
|
TRUE)
|
|
endif()
|
|
endfunction()
|
|
|
|
function(x_tools_tar_target target)
|
|
if(WIN32)
|
|
string(TOLOWER ${target} lower_target)
|
|
string(TOLOWER ${CMAKE_HOST_SYSTEM_NAME} lower_system_name)
|
|
string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} lower_system_processor)
|
|
set(TAR_FILE_NAME ${lower_target}-${lower_system_name}-${lower_system_processor})
|
|
add_custom_command(
|
|
TARGET ${target}
|
|
POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E tar "cf" ${TAR_FILE_NAME}.zip "--format=zip" ${target}
|
|
WORKING_DIRECTORY ${X_TOOLS_BINARY_DIR})
|
|
endif()
|
|
endfunction()
|
|
|
|
function(x_tools_finalize_executable target)
|
|
if(QT_VERSION_MAJOR EQUAL 6)
|
|
qt_finalize_executable(${target})
|
|
endif()
|
|
endfunction()
|
|
|
|
function(x_tools_generate_translations target)
|
|
if(QT_VERSION_MAJOR LESS 6)
|
|
return()
|
|
endif()
|
|
|
|
set(APP_TS_FILES "")
|
|
list(APPEND APP_TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Resources/Translations/${target}_en.ts)
|
|
list(APPEND APP_TS_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Resources/Translations/${target}_zh_CN.ts)
|
|
set(O_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Resources/Translations")
|
|
qt_add_lupdate(${target} TS_FILES ${APP_TS_FILES})
|
|
set_source_files_properties(${APP_TS_FILES} PROPERTIES OUTPUT_LOCATION ${O_PATH})
|
|
qt_add_lrelease(${target} TS_FILES ${APP_TS_FILES})
|
|
endfunction()
|