x-tools/cmake/x_3rd_qxlsx.cmake
2025-08-01 14:26:58 +08:00

55 lines
2.5 KiB
CMake

# * https://github.com/QtExcel/QXlsx
# * https://codeload.github.com/QtExcel/QXlsx/zip/refs/tags/v1.4.10
set(qxlsx_version "1.4.10")
set(qxlsx_package_name "QXlsx-${qxlsx_version}")
if(NOT QT_VERSION VERSION_GREATER_EQUAL "5.11.0")
set(qxlsx_version "1.4.7")
set(qxlsx_package_name "QXlsx-${qxlsx_version}")
endif()
# --------------------------------------------------------------------------------------------------
# Download QXlsx zip...
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/3rd/${qxlsx_package_name}.zip)
file(DOWNLOAD "https://codeload.github.com/QtExcel/QXlsx/zip/refs/tags/v${qxlsx_version}"
${CMAKE_CURRENT_SOURCE_DIR}/3rd/${qxlsx_package_name}.zip STATUS download_status)
if(NOT download_status EQUAL 0)
set(qxlsx_version "1.4.7")
set(qxlsx_package_name "QXlsx-${qxlsx_version}")
endif()
endif()
# --------------------------------------------------------------------------------------------------
# Extract QXlsx zip...
if(NOT EXISTS ${CMAKE_SOURCE_DIR}/3rd/${qxlsx_package_name})
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf ${qxlsx_package_name}.zip
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/3rd)
endif()
# --------------------------------------------------------------------------------------------------
# Add QXlsx module...
string(TOLOWER ${qxlsx_package_name} qxlsx_package_name_lower)
set(qxlsx_dst_dir ${X_LIBS_DIR}/${qxlsx_package_name_lower})
if(EXISTS ${qxlsx_dst_dir}/install.stamp)
set(CMAKE_PREFIX_PATH ${qxlsx_dst_dir} ${CMAKE_PREFIX_PATH})
include_directories(${qxlsx_dst_dir}/include/QXlsxQt${QT_VERSION_MAJOR})
find_package(QXlsxQt${QT_VERSION_MAJOR} REQUIRED)
else()
add_subdirectory(${CMAKE_SOURCE_DIR}/3rd/${qxlsx_package_name}/QXlsx)
set_property(TARGET QXlsx PROPERTY FOLDER "3rd")
add_custom_command(
OUTPUT ${X_LIBS_DIR}/${qxlsx_package_name_lower}/install.stamp
COMMAND ${CMAKE_COMMAND} --install . --prefix ${X_LIBS_DIR}/${qxlsx_package_name_lower}
COMMAND ${CMAKE_COMMAND} -E touch ${X_LIBS_DIR}/${qxlsx_package_name_lower}/install.stamp
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3rd/${qxlsx_package_name}/QXlsx
COMMENT "Installing QXlsx to ${X_LIBS_DIR}/${qxlsx_package_name_lower}")
add_custom_target(QXlsx_auto_install ALL
DEPENDS ${X_LIBS_DIR}/${qxlsx_package_name_lower}/install.stamp)
add_dependencies(QXlsx_auto_install QXlsx)
set_property(TARGET QXlsx_auto_install PROPERTY FOLDER "3rd")
endif()
list(APPEND X_LIBS QXlsx::QXlsx)
add_compile_definitions(X_ENABLE_QXLSX)