diff --git a/recipes/qxlsx/all/conandata.yml b/recipes/qxlsx/all/conandata.yml index 68d91ea6c0831..afceaea58d857 100644 --- a/recipes/qxlsx/all/conandata.yml +++ b/recipes/qxlsx/all/conandata.yml @@ -5,14 +5,3 @@ sources: "1.4.4": url: "https://github.com/QtExcel/QXlsx/archive/refs/tags/v1.4.4.zip" sha256: "3efbd6f63a1ffd521c535dce7b5a5a7e9ebd23db51e6ae8e3e2eb89796e57675" - "1.4.3": - url: "https://github.com/QtExcel/QXlsx/archive/refs/tags/v1.4.3.zip" - sha256: "d2f7c6aff71f2f30ade8d8020682e36a3d63f422a5d2f1c5831b55573241bd4a" -patches: - "1.4.3": - - patch_file: "patches/1.4.3/0001-allow-shared.patch" - patch_type: "conan" - patch_source: "https://github.com/QtExcel/QXlsx/pull/197" - - patch_file: "patches/1.4.3/0002-add-install-target.patch" - patch_type: "conan" - patch_source: "https://github.com/QtExcel/QXlsx/pull/197" diff --git a/recipes/qxlsx/all/conanfile.py b/recipes/qxlsx/all/conanfile.py index 28fac77f7f2b5..8ec88efb7ec9f 100644 --- a/recipes/qxlsx/all/conanfile.py +++ b/recipes/qxlsx/all/conanfile.py @@ -1,8 +1,10 @@ from conan import ConanFile from conan.tools.cmake import CMake, CMakeToolchain, CMakeDeps, cmake_layout from conan.tools.env import VirtualBuildEnv -from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, rmdir +from conan.tools.files import copy, get, rmdir from conan.tools.scm import Version +from conan.tools.microsoft import is_msvc +from conan.errors import ConanInvalidConfiguration import os required_conan_version = ">=1.53.0" @@ -28,10 +30,7 @@ class QXlsxConan(ConanFile): @property def _qt_version(self): - return Version(self.dependencies["qt"].ref.version).major - - def export_sources(self): - export_conandata_patches(self) + return str(Version(self.dependencies["qt"].ref.version).major) def config_options(self): if self.settings.os == "Windows": @@ -45,7 +44,16 @@ def layout(self): cmake_layout(self, src_folder="src") def requirements(self): - self.requires("qt/5.15.9") + # INFO: QXlsx/xlsxdocument.h includes QtGlobal + # INFO: transitive libs: undefined reference to symbol '_ZN10QArrayData10deallocateEPS_mm@@Qt_5' + self.requires("qt/[~5.15]", transitive_headers=True, transitive_libs=True) + + def validate(self): + if not self.dependencies["qt"].options.gui: + raise ConanInvalidConfiguration(f"{self.ref} requires Qt with gui component. Use '-o qt/*:gui=True'") + if Version(self.version) == "1.4.4" and is_msvc(self) and self.options.shared: + # FIXME: xlsxworksheet.cpp.obj : error LNK2019: unresolved external symbol " __cdecl QVector::begin( + raise ConanInvalidConfiguration(f"{self.ref} Conan recipe does not support shared library with MSVC. Use version 1.4.5 or later.") def build_requirements(self): if Version(self.version) >= "1.4.4": @@ -58,38 +66,32 @@ def generate(self): tc = VirtualBuildEnv(self) tc.generate() tc = CMakeToolchain(self) - tc.variables["QT_VERSION_MAJOR"] = self._qt_version + tc.cache_variables["QT_VERSION_MAJOR"] = self._qt_version tc.generate() tc = CMakeDeps(self) tc.generate() def build(self): - apply_conandata_patches(self) cmake = CMake(self) - cmake.configure(build_script_folder="QXlsx") + cmake.configure(build_script_folder=os.path.join(self.source_folder, "QXlsx")) cmake.build() def package(self): copy(self, "LICENSE", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses")) cmake = CMake(self) - cmake.configure(build_script_folder="QXlsx") cmake.install() rmdir(self, os.path.join(self.package_folder, "lib", "cmake")) def package_info(self): - self.cpp_info.set_property("cmake_file_name", "QXlsx") - self.cpp_info.set_property("cmake_target_name", "QXlsx::Core") - # TODO: back to global scope in conan v2 once cmake_find_package* generators removed - if Version(self.version) <= "1.4.4": - self.cpp_info.components["qxlsx_core"].libs = ["QXlsx"] - else: - self.cpp_info.components["qxlsx_core"].libs = [f"QXlsxQt{self._qt_version}"] - self.cpp_info.components["qxlsx_core"].includedirs = [os.path.join("include", "QXlsx")] - self.cpp_info.components["qxlsx_core"].requires = ["qt::qtCore", "qt::qtGui"] + cmake_name = f"QXlsxQt{self._qt_version}" if Version(self.version) >= "1.4.5" else "QXlsx" + self.cpp_info.set_property("cmake_file_name", cmake_name) + self.cpp_info.set_property("cmake_target_name", "QXlsx::QXlsx") + self.cpp_info.libs = [cmake_name] + self.cpp_info.includedirs = ["include", os.path.join("include", "QXlsx")] + self.cpp_info.requires = ["qt::qtCore", "qt::qtGui"] # TODO: to remove in conan v2 once cmake_find_package* generators removed + self.cpp_info.filenames["cmake_find_package"] = cmake_name + self.cpp_info.filenames["cmake_find_package_multi"] = cmake_name + self.cpp_info.names["cmake_find_package"] = "QXlsx" self.cpp_info.names["cmake_find_package"] = "QXlsx" - self.cpp_info.names["cmake_find_package_multi"] = "QXlsx" - self.cpp_info.components["qxlsx_core"].names["cmake_find_package"] = "Core" - self.cpp_info.components["qxlsx_core"].names["cmake_find_package_multi"] = "Core" - self.cpp_info.components["qxlsx_core"].set_property("cmake_target_name", "QXlsx::Core") diff --git a/recipes/qxlsx/all/patches/1.4.3/0001-allow-shared.patch b/recipes/qxlsx/all/patches/1.4.3/0001-allow-shared.patch deleted file mode 100644 index b640cac70894b..0000000000000 --- a/recipes/qxlsx/all/patches/1.4.3/0001-allow-shared.patch +++ /dev/null @@ -1,218 +0,0 @@ ---- a/QXlsx/CMakeLists.txt -+++ b/QXlsx/CMakeLists.txt -@@ -39,7 +39,7 @@ file(GLOB QXLSX_H "${QXLSX_HEADERPATH}/*.h") - set(SRC_FILES ${QXLSX_CPP}) - list(APPEND SRC_FILES ${QXLSX_H}) - --add_library(QXlsx STATIC -+add_library(QXlsx - ${SRC_FILES} ) - - target_include_directories(QXlsx PRIVATE ${QXLSX_HEADERPATH}) -@@ -50,3 +50,6 @@ target_link_libraries(${PROJECT_NAME} - ) - - target_compile_definitions(QXlsx PRIVATE QXLSX_LIBRARY) -+if (BUILD_SHARED_LIBS) -+ target_compile_definitions(QXlsx PRIVATE QXLSX_SHARED) -+endif() ---- a/QXlsx/header/xlsxabstractooxmlfile.h -+++ b/QXlsx/header/xlsxabstractooxmlfile.h -@@ -10,7 +10,7 @@ QT_BEGIN_NAMESPACE_XLSX - class Relationships; - class AbstractOOXmlFilePrivate; - --class AbstractOOXmlFile -+class QXLSX_EXPORT AbstractOOXmlFile - { - Q_DECLARE_PRIVATE(AbstractOOXmlFile) - ---- a/QXlsx/header/xlsxabstractsheet.h -+++ b/QXlsx/header/xlsxabstractsheet.h -@@ -12,7 +12,7 @@ class Workbook; - class Drawing; - class AbstractSheetPrivate; - --class AbstractSheet : public AbstractOOXmlFile -+class QXLSX_EXPORT AbstractSheet : public AbstractOOXmlFile - { - Q_DECLARE_PRIVATE(AbstractSheet) - ---- a/QXlsx/header/xlsxcell.h -+++ b/QXlsx/header/xlsxcell.h -@@ -24,7 +24,7 @@ class CellFormula; - class CellPrivate; - class WorksheetPrivate; - --class Cell -+class QXLSX_EXPORT Cell - { - Q_DECLARE_PRIVATE(Cell) - ---- a/QXlsx/header/xlsxcellformula.h -+++ b/QXlsx/header/xlsxcellformula.h -@@ -17,7 +17,7 @@ class CellRange; - class Worksheet; - class WorksheetPrivate; - --class CellFormula -+class QXLSX_EXPORT CellFormula - { - public: - enum FormulaType { NormalType, ArrayType, DataTableType, SharedType }; ---- a/QXlsx/header/xlsxcelllocation.h -+++ b/QXlsx/header/xlsxcelllocation.h -@@ -17,7 +17,7 @@ QT_BEGIN_NAMESPACE_XLSX - - class Cell; - --class CellLocation -+class QXLSX_EXPORT CellLocation - { - public: - CellLocation(); ---- a/QXlsx/header/xlsxcellrange.h -+++ b/QXlsx/header/xlsxcellrange.h -@@ -12,7 +12,7 @@ - QT_BEGIN_NAMESPACE_XLSX - - // dev57 --class CellRange -+class QXLSX_EXPORT CellRange - { - public: - CellRange(); ---- a/QXlsx/header/xlsxcellreference.h -+++ b/QXlsx/header/xlsxcellreference.h -@@ -9,7 +9,7 @@ - - QT_BEGIN_NAMESPACE_XLSX - --class CellReference -+class QXLSX_EXPORT CellReference - { - public: - CellReference(); ---- a/QXlsx/header/xlsxchart.h -+++ b/QXlsx/header/xlsxchart.h -@@ -18,7 +18,7 @@ class ChartPrivate; - class CellRange; - class DrawingAnchor; - --class Chart : public AbstractOOXmlFile -+class QXLSX_EXPORT Chart : public AbstractOOXmlFile - { - Q_DECLARE_PRIVATE(Chart) - public: ---- a/QXlsx/header/xlsxchartsheet.h -+++ b/QXlsx/header/xlsxchartsheet.h -@@ -16,7 +16,7 @@ class DocumentPrivate; - class ChartsheetPrivate; - class Chart; - --class Chartsheet : public AbstractSheet -+class QXLSX_EXPORT Chartsheet : public AbstractSheet - { - Q_DECLARE_PRIVATE(Chartsheet) - ---- a/QXlsx/header/xlsxconditionalformatting.h -+++ b/QXlsx/header/xlsxconditionalformatting.h -@@ -24,7 +24,7 @@ class Worksheet; - class Styles; - class ConditionalFormattingPrivate; - --class ConditionalFormatting -+class QXLSX_EXPORT ConditionalFormatting - { - public: - enum HighlightRuleType { ---- a/QXlsx/header/xlsxdatavalidation.h -+++ b/QXlsx/header/xlsxdatavalidation.h -@@ -22,7 +22,7 @@ class CellRange; - class CellReference; - - class DataValidationPrivate; --class DataValidation -+class QXLSX_EXPORT DataValidation - { - public: - enum ValidationType ---- a/QXlsx/header/xlsxdatetype.h -+++ b/QXlsx/header/xlsxdatetype.h -@@ -15,7 +15,7 @@ - - QT_BEGIN_NAMESPACE_XLSX - --class DateType -+class QXLSX_EXPORT DateType - { - public: - DateType(); ---- a/QXlsx/header/xlsxdocument.h -+++ b/QXlsx/header/xlsxdocument.h -@@ -24,7 +24,7 @@ class Chart; - class CellReference; - class DocumentPrivate; - --class Document : public QObject -+class QXLSX_EXPORT Document : public QObject - { - Q_OBJECT - Q_DECLARE_PRIVATE(Document) // D-Pointer. Qt classes have a Q_DECLARE_PRIVATE ---- a/QXlsx/header/xlsxformat.h -+++ b/QXlsx/header/xlsxformat.h -@@ -24,7 +24,7 @@ class SharedStrings; - - class FormatPrivate; - --class Format -+class QXLSX_EXPORT Format - { - public: - enum FontScript ---- a/QXlsx/header/xlsxglobal.h -+++ b/QXlsx/header/xlsxglobal.h -@@ -30,4 +30,10 @@ - #define Q_DECL_NOTHROW - #endif - -+#ifdef QXLSX_SHARED -+#define QXLSX_EXPORT Q_DECL_EXPORT -+#else -+#define QXLSX_EXPORT -+#endif -+ - #endif // XLSXGLOBAL_H ---- a/QXlsx/header/xlsxrichstring.h -+++ b/QXlsx/header/xlsxrichstring.h -@@ -37,7 +37,7 @@ class RichString; - // qHash is a friend, but we can't use default arguments for friends (ยง8.3.6.4) - uint qHash(const RichString &rs, uint seed = 0) Q_DECL_NOTHROW; - --class RichString -+class QXLSX_EXPORT RichString - { - public: - RichString(); ---- a/QXlsx/header/xlsxworkbook.h -+++ b/QXlsx/header/xlsxworkbook.h -@@ -28,7 +28,7 @@ class Chartsheet; - class Worksheet; - class WorkbookPrivate; - --class Workbook : public AbstractOOXmlFile -+class QXLSX_EXPORT Workbook : public AbstractOOXmlFile - { - Q_DECLARE_PRIVATE(Workbook) - public: ---- a/QXlsx/header/xlsxworksheet.h -+++ b/QXlsx/header/xlsxworksheet.h -@@ -37,7 +37,7 @@ class Relationships; - class Chart; - - class WorksheetPrivate; --class Worksheet : public AbstractSheet -+class QXLSX_EXPORT Worksheet : public AbstractSheet - { - Q_DECLARE_PRIVATE(Worksheet) - diff --git a/recipes/qxlsx/all/patches/1.4.3/0002-add-install-target.patch b/recipes/qxlsx/all/patches/1.4.3/0002-add-install-target.patch deleted file mode 100644 index 48125aa4d3f43..0000000000000 --- a/recipes/qxlsx/all/patches/1.4.3/0002-add-install-target.patch +++ /dev/null @@ -1,37 +0,0 @@ ---- a/QXlsx/CMakeLists.txt -+++ b/QXlsx/CMakeLists.txt -@@ -53,3 +53,34 @@ target_compile_definitions(QXlsx PRIVATE QXLSX_LIBRARY) - if (BUILD_SHARED_LIBS) - target_compile_definitions(QXlsx PRIVATE QXLSX_SHARED) - endif() -+ -+set(QXLSX_PUBLIC_HEADERS -+ header/xlsxdocument.h -+ header/xlsxabstractooxmlfile.h -+ header/xlsxabstractsheet.h -+ header/xlsxabstractsheet_p.h -+ header/xlsxcellformula.h -+ header/xlsxcell.h -+ header/xlsxcelllocation.h -+ header/xlsxcellrange.h -+ header/xlsxcellreference.h -+ header/xlsxchart.h -+ header/xlsxchartsheet.h -+ header/xlsxconditionalformatting.h -+ header/xlsxdatavalidation.h -+ header/xlsxdatetype.h -+ header/xlsxdocument.h -+ header/xlsxformat.h -+ header/xlsxglobal.h -+ header/xlsxrichstring.h -+ header/xlsxworkbook.h -+ header/xlsxworksheet.h -+) -+set_property(TARGET QXlsx PROPERTY PUBLIC_HEADER ${QXLSX_PUBLIC_HEADERS}) -+include(GNUInstallDirs) -+install(TARGETS QXlsx -+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} -+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/QXlsx -+) diff --git a/recipes/qxlsx/all/test_package/CMakeLists.txt b/recipes/qxlsx/all/test_package/CMakeLists.txt index d57016937dd42..90e52caff7985 100644 --- a/recipes/qxlsx/all/test_package/CMakeLists.txt +++ b/recipes/qxlsx/all/test_package/CMakeLists.txt @@ -1,8 +1,9 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.15) project(test_package LANGUAGES CXX) -find_package(QXlsx REQUIRED CONFIG) +find_package(QXlsx QUIET CONFIG) +find_package(QXlsxQt5 QUIET CONFIG) add_executable(${PROJECT_NAME} test_package.cpp) -target_link_libraries(${PROJECT_NAME} PRIVATE QXlsx::Core) -set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 17) +target_link_libraries(${PROJECT_NAME} PRIVATE QXlsx::QXlsx) +target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17) diff --git a/recipes/qxlsx/all/test_package/conanfile.py b/recipes/qxlsx/all/test_package/conanfile.py index 6d529581ba2f5..40f70f535b209 100644 --- a/recipes/qxlsx/all/test_package/conanfile.py +++ b/recipes/qxlsx/all/test_package/conanfile.py @@ -7,6 +7,7 @@ class TestPackageConan(ConanFile): settings = "os", "arch", "compiler", "build_type" generators = "CMakeDeps", "VirtualRunEnv" + test_type = "explicit" def requirements(self): self.requires(self.tested_reference_str) diff --git a/recipes/qxlsx/all/test_package/test_package.cpp b/recipes/qxlsx/all/test_package/test_package.cpp index ec71d1106e960..14f8874944818 100644 --- a/recipes/qxlsx/all/test_package/test_package.cpp +++ b/recipes/qxlsx/all/test_package/test_package.cpp @@ -1,15 +1,9 @@ -#include -#include #include int main() { - QBuffer device; - device.open(QIODevice::WriteOnly); - - QXlsx::Document xlsx1; - xlsx1.write("A1", true); - xlsx1.write("A2", false); - xlsx1.saveAs(&device); + // INFO: Document does not exist. Only for test package purposes. + QXlsx::Document xlsxR("Test.xlsx"); + xlsxR.load(); return 0; } diff --git a/recipes/qxlsx/all/test_v1_package/CMakeLists.txt b/recipes/qxlsx/all/test_v1_package/CMakeLists.txt deleted file mode 100644 index 0d20897301b68..0000000000000 --- a/recipes/qxlsx/all/test_v1_package/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -cmake_minimum_required(VERSION 3.1) -project(test_package) - -include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) -conan_basic_setup(TARGETS) - -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../test_package - ${CMAKE_CURRENT_BINARY_DIR}/test_package) diff --git a/recipes/qxlsx/all/test_v1_package/conanfile.py b/recipes/qxlsx/all/test_v1_package/conanfile.py deleted file mode 100644 index 38f4483872d47..0000000000000 --- a/recipes/qxlsx/all/test_v1_package/conanfile.py +++ /dev/null @@ -1,17 +0,0 @@ -from conans import ConanFile, CMake, tools -import os - - -class TestPackageConan(ConanFile): - settings = "os", "arch", "compiler", "build_type" - generators = "cmake", "cmake_find_package_multi" - - def build(self): - cmake = CMake(self) - cmake.configure() - cmake.build() - - def test(self): - if not tools.cross_building(self): - bin_path = os.path.join("bin", "test_package") - self.run(bin_path, run_environment=True) diff --git a/recipes/qxlsx/config.yml b/recipes/qxlsx/config.yml index c1105e1540729..bcda68af0d12d 100644 --- a/recipes/qxlsx/config.yml +++ b/recipes/qxlsx/config.yml @@ -3,5 +3,3 @@ versions: folder: "all" "1.4.4": folder: "all" - "1.4.3": - folder: "all"