From 2e610a492d58f908b89b3bfe4e7e8ba537d553fa Mon Sep 17 00:00:00 2001 From: bing Date: Thu, 2 Apr 2026 14:07:03 +0800 Subject: [PATCH] init --- mingw-windows/conanbuild.bat | 2 + mingw-windows/conanbuildenv-debug-x86_64.bat | 30 ++++++++ .../conanbuildenv-release-x86_64.bat | 30 ++++++++ mingw-windows/conanfile.py | 70 +++++++++++++++++++ mingw-windows/conanrun.bat | 2 + mingw-windows/conanrunenv-debug-x86_64.bat | 24 +++++++ mingw-windows/conanrunenv-release-x86_64.bat | 24 +++++++ mingw-windows/deactivate_conanbuild.bat | 2 + mingw-windows/deactivate_conanrun.bat | 2 + msvc-windows/conanbuild.bat | 2 + msvc-windows/conanbuildenv-debug-x86_64.bat | 30 ++++++++ msvc-windows/conanbuildenv-release-x86_64.bat | 30 ++++++++ msvc-windows/conanfile.py | 68 ++++++++++++++++++ msvc-windows/conanrun.bat | 2 + msvc-windows/conanrunenv-debug-x86_64.bat | 24 +++++++ msvc-windows/conanrunenv-release-x86_64.bat | 24 +++++++ msvc-windows/deactivate_conanbuild.bat | 2 + msvc-windows/deactivate_conanrun.bat | 2 + pack_and_upload.ps1 | 25 +++++++ 19 files changed, 395 insertions(+) create mode 100644 mingw-windows/conanbuild.bat create mode 100644 mingw-windows/conanbuildenv-debug-x86_64.bat create mode 100644 mingw-windows/conanbuildenv-release-x86_64.bat create mode 100644 mingw-windows/conanfile.py create mode 100644 mingw-windows/conanrun.bat create mode 100644 mingw-windows/conanrunenv-debug-x86_64.bat create mode 100644 mingw-windows/conanrunenv-release-x86_64.bat create mode 100644 mingw-windows/deactivate_conanbuild.bat create mode 100644 mingw-windows/deactivate_conanrun.bat create mode 100644 msvc-windows/conanbuild.bat create mode 100644 msvc-windows/conanbuildenv-debug-x86_64.bat create mode 100644 msvc-windows/conanbuildenv-release-x86_64.bat create mode 100644 msvc-windows/conanfile.py create mode 100644 msvc-windows/conanrun.bat create mode 100644 msvc-windows/conanrunenv-debug-x86_64.bat create mode 100644 msvc-windows/conanrunenv-release-x86_64.bat create mode 100644 msvc-windows/deactivate_conanbuild.bat create mode 100644 msvc-windows/deactivate_conanrun.bat create mode 100644 pack_and_upload.ps1 diff --git a/mingw-windows/conanbuild.bat b/mingw-windows/conanbuild.bat new file mode 100644 index 0000000..f83c4e4 --- /dev/null +++ b/mingw-windows/conanbuild.bat @@ -0,0 +1,2 @@ +@echo off +call "%~dp0/conanbuildenv-debug-x86_64.bat" \ No newline at end of file diff --git a/mingw-windows/conanbuildenv-debug-x86_64.bat b/mingw-windows/conanbuildenv-debug-x86_64.bat new file mode 100644 index 0000000..bd4366b --- /dev/null +++ b/mingw-windows/conanbuildenv-debug-x86_64.bat @@ -0,0 +1,30 @@ +@echo off +chcp 65001 > nul +@echo off + + +setlocal +echo @echo off > "%~dp0/deactivate_conanbuildenv-debug-x86_64.bat" +echo echo Restoring environment for conanbuildenv-debug-x86_64.bat >> "%~dp0/deactivate_conanbuildenv-debug-x86_64.bat" +for %%v in (PATH) do ( + set foundenvvar= + for /f "delims== tokens=1,2" %%a in ('set') do ( + if /I "%%a" == "%%v" ( + echo set "%%a=%%b">> "%~dp0/deactivate_conanbuildenv-debug-x86_64.bat" + set foundenvvar=1 + ) + ) + if not defined foundenvvar ( + echo set %%v=>> "%~dp0/deactivate_conanbuildenv-debug-x86_64.bat" + ) +) +endlocal + + + + +if defined PATH ( + set "PATH=C:\Qt\Qt5.14.2\Tools\mingw730_64\bin;%PATH%" +) else ( + set "PATH=C:\Qt\Qt5.14.2\Tools\mingw730_64\bin" +) \ No newline at end of file diff --git a/mingw-windows/conanbuildenv-release-x86_64.bat b/mingw-windows/conanbuildenv-release-x86_64.bat new file mode 100644 index 0000000..89e1575 --- /dev/null +++ b/mingw-windows/conanbuildenv-release-x86_64.bat @@ -0,0 +1,30 @@ +@echo off +chcp 65001 > nul +@echo off + + +setlocal +echo @echo off > "%~dp0/deactivate_conanbuildenv-release-x86_64.bat" +echo echo Restoring environment for conanbuildenv-release-x86_64.bat >> "%~dp0/deactivate_conanbuildenv-release-x86_64.bat" +for %%v in (PATH) do ( + set foundenvvar= + for /f "delims== tokens=1,2" %%a in ('set') do ( + if /I "%%a" == "%%v" ( + echo set "%%a=%%b">> "%~dp0/deactivate_conanbuildenv-release-x86_64.bat" + set foundenvvar=1 + ) + ) + if not defined foundenvvar ( + echo set %%v=>> "%~dp0/deactivate_conanbuildenv-release-x86_64.bat" + ) +) +endlocal + + + + +if defined PATH ( + set "PATH=C:\Qt\Qt5.14.2\Tools\mingw730_64\bin;%PATH%" +) else ( + set "PATH=C:\Qt\Qt5.14.2\Tools\mingw730_64\bin" +) \ No newline at end of file diff --git a/mingw-windows/conanfile.py b/mingw-windows/conanfile.py new file mode 100644 index 0000000..3c63332 --- /dev/null +++ b/mingw-windows/conanfile.py @@ -0,0 +1,70 @@ +from conan import ConanFile +from conan.tools.files import copy +import os + +class MinGWQtConan(ConanFile): + name = "qt" + version = "5.14.2" + + # Notice we keep build_type so Conan can generate + # isolated Debug and Release packages upon user request. + settings = "os", "compiler", "build_type", "arch" + + # We do not build anything, we just package the pre-compiled folders + def build(self): + pass + + def package(self): + # We know the absolute path of the local MinGW installation + bin_path = r"C:\Qt\Qt5.14.2\5.14.2\mingw73_64" + self.output.info(f"Packaging {bin_path}...") + + # Copy bin, lib, include, mkspecs, plugins, qml, etc. + copy(self, "*", src=bin_path, dst=self.package_folder, keep_path=True) + + # Create bin/qt.conf to avoid hardcoded absolute paths! + # This makes qmake, windeployqt, and qtcreator fully independent + # of the original "C:\Qt\Qt5.14.2\..." installation paths. + qt_conf_path = os.path.join(self.package_folder, "bin", "qt.conf") + with open(qt_conf_path, "w", encoding="utf-8") as f: + f.write("[Paths]\n") + f.write("Prefix = ..\n") + f.write("ArchData = .\n") + f.write("Data = .\n") + f.write("Documentation = doc\n") + f.write("Headers = include\n") + f.write("Libraries = lib\n") + f.write("LibraryExecutables = bin\n") + f.write("Binaries = bin\n") + f.write("Plugins = plugins\n") + f.write("Imports = imports\n") + f.write("Qml2Imports = qml\n") + f.write("Translations = translations\n") + f.write("Settings = .\n") + f.write("Examples = examples\n") + f.write("Tests = tests\n") + + def package_info(self): + self.cpp_info.bindirs = ["bin"] + self.cpp_info.libdirs = ["lib"] + self.cpp_info.includedirs = ["include"] + # CMake config files provided by Qt will be registered here + self.cpp_info.builddirs = ["lib/cmake", "lib/cmake/Qt5", "mkspecs"] + + qt_dir = self.package_folder + qt_plugin_path = os.path.join(self.package_folder, "plugins") + qml2_import_path = os.path.join(self.package_folder, "qml") + + # Set environment variables so QtCreator auto-detects dynamically + self.buildenv_info.define_path("QTDIR", qt_dir) + self.buildenv_info.define_path("QT_PLUGIN_PATH", qt_plugin_path) + self.buildenv_info.define_path("QML2_IMPORT_PATH", qml2_import_path) + + self.runenv_info.define_path("QTDIR", qt_dir) + self.runenv_info.define_path("QT_PLUGIN_PATH", qt_plugin_path) + self.runenv_info.define_path("QML2_IMPORT_PATH", qml2_import_path) + + self.buildenv_info.prepend_path("PATH", os.path.join(self.package_folder, "bin")) + self.runenv_info.prepend_path("PATH", os.path.join(self.package_folder, "bin")) + + self.cpp_info.set_property("cmake_build_modules", ["lib/cmake/Qt5/Qt5Config.cmake"]) diff --git a/mingw-windows/conanrun.bat b/mingw-windows/conanrun.bat new file mode 100644 index 0000000..6ce6e99 --- /dev/null +++ b/mingw-windows/conanrun.bat @@ -0,0 +1,2 @@ +@echo off +call "%~dp0/conanrunenv-debug-x86_64.bat" \ No newline at end of file diff --git a/mingw-windows/conanrunenv-debug-x86_64.bat b/mingw-windows/conanrunenv-debug-x86_64.bat new file mode 100644 index 0000000..2209984 --- /dev/null +++ b/mingw-windows/conanrunenv-debug-x86_64.bat @@ -0,0 +1,24 @@ +@echo off +chcp 65001 > nul +@echo off + + +setlocal +echo @echo off > "%~dp0/deactivate_conanrunenv-debug-x86_64.bat" +echo echo Restoring environment for conanrunenv-debug-x86_64.bat >> "%~dp0/deactivate_conanrunenv-debug-x86_64.bat" +for %%v in () do ( + set foundenvvar= + for /f "delims== tokens=1,2" %%a in ('set') do ( + if /I "%%a" == "%%v" ( + echo set "%%a=%%b">> "%~dp0/deactivate_conanrunenv-debug-x86_64.bat" + set foundenvvar=1 + ) + ) + if not defined foundenvvar ( + echo set %%v=>> "%~dp0/deactivate_conanrunenv-debug-x86_64.bat" + ) +) +endlocal + + + diff --git a/mingw-windows/conanrunenv-release-x86_64.bat b/mingw-windows/conanrunenv-release-x86_64.bat new file mode 100644 index 0000000..0e45da3 --- /dev/null +++ b/mingw-windows/conanrunenv-release-x86_64.bat @@ -0,0 +1,24 @@ +@echo off +chcp 65001 > nul +@echo off + + +setlocal +echo @echo off > "%~dp0/deactivate_conanrunenv-release-x86_64.bat" +echo echo Restoring environment for conanrunenv-release-x86_64.bat >> "%~dp0/deactivate_conanrunenv-release-x86_64.bat" +for %%v in () do ( + set foundenvvar= + for /f "delims== tokens=1,2" %%a in ('set') do ( + if /I "%%a" == "%%v" ( + echo set "%%a=%%b">> "%~dp0/deactivate_conanrunenv-release-x86_64.bat" + set foundenvvar=1 + ) + ) + if not defined foundenvvar ( + echo set %%v=>> "%~dp0/deactivate_conanrunenv-release-x86_64.bat" + ) +) +endlocal + + + diff --git a/mingw-windows/deactivate_conanbuild.bat b/mingw-windows/deactivate_conanbuild.bat new file mode 100644 index 0000000..6a180d7 --- /dev/null +++ b/mingw-windows/deactivate_conanbuild.bat @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\deactivate_conanbuildenv-debug-x86_64.bat" \ No newline at end of file diff --git a/mingw-windows/deactivate_conanrun.bat b/mingw-windows/deactivate_conanrun.bat new file mode 100644 index 0000000..7321026 --- /dev/null +++ b/mingw-windows/deactivate_conanrun.bat @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\deactivate_conanrunenv-debug-x86_64.bat" \ No newline at end of file diff --git a/msvc-windows/conanbuild.bat b/msvc-windows/conanbuild.bat new file mode 100644 index 0000000..f83c4e4 --- /dev/null +++ b/msvc-windows/conanbuild.bat @@ -0,0 +1,2 @@ +@echo off +call "%~dp0/conanbuildenv-debug-x86_64.bat" \ No newline at end of file diff --git a/msvc-windows/conanbuildenv-debug-x86_64.bat b/msvc-windows/conanbuildenv-debug-x86_64.bat new file mode 100644 index 0000000..bd4366b --- /dev/null +++ b/msvc-windows/conanbuildenv-debug-x86_64.bat @@ -0,0 +1,30 @@ +@echo off +chcp 65001 > nul +@echo off + + +setlocal +echo @echo off > "%~dp0/deactivate_conanbuildenv-debug-x86_64.bat" +echo echo Restoring environment for conanbuildenv-debug-x86_64.bat >> "%~dp0/deactivate_conanbuildenv-debug-x86_64.bat" +for %%v in (PATH) do ( + set foundenvvar= + for /f "delims== tokens=1,2" %%a in ('set') do ( + if /I "%%a" == "%%v" ( + echo set "%%a=%%b">> "%~dp0/deactivate_conanbuildenv-debug-x86_64.bat" + set foundenvvar=1 + ) + ) + if not defined foundenvvar ( + echo set %%v=>> "%~dp0/deactivate_conanbuildenv-debug-x86_64.bat" + ) +) +endlocal + + + + +if defined PATH ( + set "PATH=C:\Qt\Qt5.14.2\Tools\mingw730_64\bin;%PATH%" +) else ( + set "PATH=C:\Qt\Qt5.14.2\Tools\mingw730_64\bin" +) \ No newline at end of file diff --git a/msvc-windows/conanbuildenv-release-x86_64.bat b/msvc-windows/conanbuildenv-release-x86_64.bat new file mode 100644 index 0000000..89e1575 --- /dev/null +++ b/msvc-windows/conanbuildenv-release-x86_64.bat @@ -0,0 +1,30 @@ +@echo off +chcp 65001 > nul +@echo off + + +setlocal +echo @echo off > "%~dp0/deactivate_conanbuildenv-release-x86_64.bat" +echo echo Restoring environment for conanbuildenv-release-x86_64.bat >> "%~dp0/deactivate_conanbuildenv-release-x86_64.bat" +for %%v in (PATH) do ( + set foundenvvar= + for /f "delims== tokens=1,2" %%a in ('set') do ( + if /I "%%a" == "%%v" ( + echo set "%%a=%%b">> "%~dp0/deactivate_conanbuildenv-release-x86_64.bat" + set foundenvvar=1 + ) + ) + if not defined foundenvvar ( + echo set %%v=>> "%~dp0/deactivate_conanbuildenv-release-x86_64.bat" + ) +) +endlocal + + + + +if defined PATH ( + set "PATH=C:\Qt\Qt5.14.2\Tools\mingw730_64\bin;%PATH%" +) else ( + set "PATH=C:\Qt\Qt5.14.2\Tools\mingw730_64\bin" +) \ No newline at end of file diff --git a/msvc-windows/conanfile.py b/msvc-windows/conanfile.py new file mode 100644 index 0000000..f5e3ed7 --- /dev/null +++ b/msvc-windows/conanfile.py @@ -0,0 +1,68 @@ +from conan import ConanFile +from conan.tools.files import copy +import os + +class MsvcQtConan(ConanFile): + name = "qt" + version = "5.14.2" + + # Notice we keep build_type so Conan can generate + # isolated Debug and Release packages upon user request. + settings = "os", "compiler", "build_type", "arch" + + # We do not build anything, we just package the pre-compiled folders + def build(self): + pass + + def package(self): + # We know the absolute path of the local MSVC 2017 installation + bin_path = r"C:\Qt\Qt5.14.2\5.14.2\msvc2017_64" + self.output.info(f"Packaging {bin_path}...") + + # Copy bin, lib, include, mkspecs, plugins, qml, etc. + copy(self, "*", src=bin_path, dst=self.package_folder, keep_path=True) + + # Create bin/qt.conf to avoid hardcoded absolute paths! + qt_conf_path = os.path.join(self.package_folder, "bin", "qt.conf") + with open(qt_conf_path, "w", encoding="utf-8") as f: + f.write("[Paths]\n") + f.write("Prefix = ..\n") + f.write("ArchData = .\n") + f.write("Data = .\n") + f.write("Documentation = doc\n") + f.write("Headers = include\n") + f.write("Libraries = lib\n") + f.write("LibraryExecutables = bin\n") + f.write("Binaries = bin\n") + f.write("Plugins = plugins\n") + f.write("Imports = imports\n") + f.write("Qml2Imports = qml\n") + f.write("Translations = translations\n") + f.write("Settings = .\n") + f.write("Examples = examples\n") + f.write("Tests = tests\n") + + def package_info(self): + self.cpp_info.bindirs = ["bin"] + self.cpp_info.libdirs = ["lib"] + self.cpp_info.includedirs = ["include"] + # CMake config files provided by Qt will be registered here + self.cpp_info.builddirs = ["lib/cmake", "lib/cmake/Qt5", "mkspecs"] + + qt_dir = self.package_folder + qt_plugin_path = os.path.join(self.package_folder, "plugins") + qml2_import_path = os.path.join(self.package_folder, "qml") + + # Set environment variables for automation and QtCreator + self.buildenv_info.define_path("QTDIR", qt_dir) + self.buildenv_info.define_path("QT_PLUGIN_PATH", qt_plugin_path) + self.buildenv_info.define_path("QML2_IMPORT_PATH", qml2_import_path) + + self.runenv_info.define_path("QTDIR", qt_dir) + self.runenv_info.define_path("QT_PLUGIN_PATH", qt_plugin_path) + self.runenv_info.define_path("QML2_IMPORT_PATH", qml2_import_path) + + self.buildenv_info.prepend_path("PATH", os.path.join(self.package_folder, "bin")) + self.runenv_info.prepend_path("PATH", os.path.join(self.package_folder, "bin")) + + self.cpp_info.set_property("cmake_build_modules", ["lib/cmake/Qt5/Qt5Config.cmake"]) diff --git a/msvc-windows/conanrun.bat b/msvc-windows/conanrun.bat new file mode 100644 index 0000000..6ce6e99 --- /dev/null +++ b/msvc-windows/conanrun.bat @@ -0,0 +1,2 @@ +@echo off +call "%~dp0/conanrunenv-debug-x86_64.bat" \ No newline at end of file diff --git a/msvc-windows/conanrunenv-debug-x86_64.bat b/msvc-windows/conanrunenv-debug-x86_64.bat new file mode 100644 index 0000000..2209984 --- /dev/null +++ b/msvc-windows/conanrunenv-debug-x86_64.bat @@ -0,0 +1,24 @@ +@echo off +chcp 65001 > nul +@echo off + + +setlocal +echo @echo off > "%~dp0/deactivate_conanrunenv-debug-x86_64.bat" +echo echo Restoring environment for conanrunenv-debug-x86_64.bat >> "%~dp0/deactivate_conanrunenv-debug-x86_64.bat" +for %%v in () do ( + set foundenvvar= + for /f "delims== tokens=1,2" %%a in ('set') do ( + if /I "%%a" == "%%v" ( + echo set "%%a=%%b">> "%~dp0/deactivate_conanrunenv-debug-x86_64.bat" + set foundenvvar=1 + ) + ) + if not defined foundenvvar ( + echo set %%v=>> "%~dp0/deactivate_conanrunenv-debug-x86_64.bat" + ) +) +endlocal + + + diff --git a/msvc-windows/conanrunenv-release-x86_64.bat b/msvc-windows/conanrunenv-release-x86_64.bat new file mode 100644 index 0000000..0e45da3 --- /dev/null +++ b/msvc-windows/conanrunenv-release-x86_64.bat @@ -0,0 +1,24 @@ +@echo off +chcp 65001 > nul +@echo off + + +setlocal +echo @echo off > "%~dp0/deactivate_conanrunenv-release-x86_64.bat" +echo echo Restoring environment for conanrunenv-release-x86_64.bat >> "%~dp0/deactivate_conanrunenv-release-x86_64.bat" +for %%v in () do ( + set foundenvvar= + for /f "delims== tokens=1,2" %%a in ('set') do ( + if /I "%%a" == "%%v" ( + echo set "%%a=%%b">> "%~dp0/deactivate_conanrunenv-release-x86_64.bat" + set foundenvvar=1 + ) + ) + if not defined foundenvvar ( + echo set %%v=>> "%~dp0/deactivate_conanrunenv-release-x86_64.bat" + ) +) +endlocal + + + diff --git a/msvc-windows/deactivate_conanbuild.bat b/msvc-windows/deactivate_conanbuild.bat new file mode 100644 index 0000000..6a180d7 --- /dev/null +++ b/msvc-windows/deactivate_conanbuild.bat @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\deactivate_conanbuildenv-debug-x86_64.bat" \ No newline at end of file diff --git a/msvc-windows/deactivate_conanrun.bat b/msvc-windows/deactivate_conanrun.bat new file mode 100644 index 0000000..7321026 --- /dev/null +++ b/msvc-windows/deactivate_conanrun.bat @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\deactivate_conanrunenv-debug-x86_64.bat" \ No newline at end of file diff --git a/pack_and_upload.ps1 b/pack_and_upload.ps1 new file mode 100644 index 0000000..d8cc92c --- /dev/null +++ b/pack_and_upload.ps1 @@ -0,0 +1,25 @@ +$ErrorActionPreference = "Stop" + +# Navigate to Mingw and package Debug and Release +cd mingw-windows +Write-Host "Packaging MinGW Release version..." -ForegroundColor Green +conan export-pkg . -s compiler=gcc -s compiler.version=7 -s compiler.cppstd=14 -s compiler.libcxx=libstdc++11 -s os=Windows -s arch=x86_64 -s build_type=Release + +Write-Host "Packaging MinGW Debug version..." -ForegroundColor Green +conan export-pkg . -s compiler=gcc -s compiler.version=7 -s compiler.cppstd=14 -s compiler.libcxx=libstdc++11 -s os=Windows -s arch=x86_64 -s build_type=Debug +cd .. + +# Navigate to MSVC and package Debug and Release +cd msvc-windows +Write-Host "Packaging MSVC Release version..." -ForegroundColor Green +conan export-pkg . -s compiler=msvc -s compiler.version=191 -s compiler.cppstd=14 -s compiler.runtime=dynamic -s compiler.runtime_type=Release -s os=Windows -s arch=x86_64 -s build_type=Release + +Write-Host "Packaging MSVC Debug version..." -ForegroundColor Green +conan export-pkg . -s compiler=msvc -s compiler.version=191 -s compiler.cppstd=14 -s compiler.runtime=dynamic -s compiler.runtime_type=Debug -s os=Windows -s arch=x86_64 -s build_type=Debug +cd .. + +Write-Host "Uploading all configurations to Gitea..." -ForegroundColor Green +# Push to the remote (it uploads all 4 variants of qt/5.14.2) +conan upload qt/5.14.2 -r gitea -c + +Write-Host "All done! Fast and lightweight packages are live." -ForegroundColor Green