Repository navigation
Conversation
- run the internal init script (./init.sh MrSpawner) - update submodules/CMake to the latest HEAD (e4e873b) - restructure the project into the Core, Interfaces, mrspawner and tests modules - add GitHub Actions: PR test action (Windows, Linux, macOS) and release build action Base structure only, no logic is implemented.
- remove the testcore helper of the template: its TEST_CORE_EXPORT (Q_DECL_IMPORT) breaks the link of the static testcore library on Windows (undefined reference to the __imp_ symbols) - follow the proven CQtDeployer pattern: every test class is a stand-alone QTest executable with QTEST_GUILESS_MAIN, registered via addTestsArg with the -o test_report.txt -txt report argument - use the versionless find_package(QT NAMES Qt6 Qt5) so that the QT_VERSION_MAJOR variable is set for the Qt:: targets
…(issue #1) On Windows the Q_DECL_IMPORT-like __declspec(dllimport) attribute created __imp_ symbol references that cannot be resolved against the static libCore.a (undefined reference to __imp__ZN9MrSpawner4initEv). The export attributes are used by the library build only; consumers get plain symbols, so the static library links on every platform.
EndrII
self-requested a review
November 14, 2026 00:13
…sue #1) qt_standard_project_setup() sets CMAKE_RUNTIME_OUTPUT_DIRECTORY to the invocation directory (the build root) on Windows, so the test executable left build/tests/ and the cqtdeployer deployTestCore target of the CI test targets failed with 'Failed to set targets' on the Windows runner. Use the template CMAKE_AUTOMOC/CMAKE_AUTOUIC settings instead, and pass the QT_ROOT_DIR environment variable to the cqtdeployer libDir option so the Qt libraries of the test executables are deployed.
Signed-off-by: Andrei Yankovich <endriipersonal@gmail.com>
EndrII
approved these changes
Nov 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements issue #1 - initialization of the Mr.Spawner repository. Base structure only, no logic is implemented.
Changes
./init.sh MrSpawnerwas run (project nameMrSpawner, allRENAME_MEplaceholders replaced).submodules/CMakebumped733e0ea→e4e873b(QuasarApp/CMakemain).src/Core- the main implementation of all project functions, a static library that works without Qt (Qt is only searched when the tests module is enabled).src/Interfaces- a super lightweight library with the public interfaces of the project (no dependencies at all).src/mrspawner- the CLI tool for running the agent, depends on all modules except tests; includes the CQtDeployer deploy configuration (deploy/mrspawner.json).tests- the testing tool based on QtTest, depends on Core and Qt. Every test class is a stand-alone QTest executable withQTEST_GUILESS_MAIN(the proven CQtDeployer pattern, issue #861) - thetestcorehelper of the template was dropped because itsQ_DECL_IMPORTexport macro breaks the link of the static testcore library on Windows..github/workflows/pr.yml- PR test action for Windows (windows-2025), Linux (ubuntu-24.04) and macOS (macos-15); installs Qt 6.10.3 + CQtDeployer, builds and runs thetesttarget, uploads test reports..github/workflows/cmake-multi-platform-build.yml- release build action (modeled after CQtDeployer): onv*tags builds on the three platforms, runs thedeploytarget and uploads the distribution packages (zip,debon Linux,dmgon macOS) to the GitHub release.Notes:
make_directory(Distro)was replaced by the standardfile(MAKE_DIRECTORY ...)in themrspawnermodule.qt_policy(SET QTP0001 NEW)was removed - QTP0001 is a QML-only policy and the project has no QML modules.find_package(QT NAMES Qt6 Qt5 ...)is used, so theQT_VERSION_MAJORvariable is set for theQt${QT_VERSION_MAJOR}::targets.Local verification
cmake -B build -G Ninja -DMRSPAWNER_TESTS=ON -DCMAKE_PREFIX_PATH=<Qt6.10.3>+ build - OK (version0.<count>.<hash>).cmake --build build --target test- 4 passed, 0 failed (CoreTest::coreInit,CoreTest::coreVersion),test_report.txtgenerated.-DMRSPAWNER_TESTS=OFF(noCMAKE_PREFIX_PATH) - configure/build/run OK.cmake --build build --target deploy- createdDistro/mrspawner_<version>_Linux_x86_64.zipand.deb.Closes #1