diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 1243880dae..77c43d6820 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest env: - QT_SELECT: qt5 + QT_SELECT: qt6 SCCACHE_GHA_ENABLED: "true" SCCACHE_CACHE_SIZE: "2G" @@ -25,7 +25,7 @@ jobs: - name: install dependencies run: | sudo apt-get update - sudo apt-get install clang libqt5opengl5-dev libqt5svg5-dev libglvnd-dev libeigen3-dev zlib1g-dev libfftw3-dev ninja-build + sudo apt-get install clang qt6-base-dev libglvnd-dev libeigen3-dev zlib1g-dev libfftw3-dev ninja-build - name: Run sccache-cache uses: mozilla-actions/sccache-action@v0.0.3 @@ -64,7 +64,7 @@ jobs: runs-on: ubuntu-latest env: - QT_SELECT: qt5 + QT_SELECT: qt6 SCCACHE_GHA_ENABLED: "true" SCCACHE_CACHE_SIZE: "2G" @@ -76,7 +76,7 @@ jobs: - name: install dependencies run: | sudo apt-get update - sudo apt-get install g++-9 libqt5opengl5-dev libqt5svg5-dev libglvnd-dev libeigen3-dev zlib1g-dev libfftw3-dev ninja-build + sudo apt-get install g++-9 qt6-base-dev libglvnd-dev libeigen3-dev zlib1g-dev libfftw3-dev ninja-build - name: Run sccache-cache uses: mozilla-actions/sccache-action@v0.0.3 @@ -113,7 +113,7 @@ jobs: runs-on: macos-latest env: - PACKAGES: "qt5 eigen pkg-config fftw libpng ninja cmake" + PACKAGES: "qt eigen pkg-config fftw libpng ninja cmake" SCCACHE_GHA_ENABLED: "true" SCCACHE_CACHE_SIZE: "2G" @@ -126,7 +126,7 @@ jobs: run: | brew update || brew update # https://github.com/Homebrew/brew/issues/2491#issuecomment-294207661 brew install $PACKAGES || brew install $PACKAGES - brew link --force qt5 + brew link --force qt - name: Run sccache-cache uses: mozilla-actions/sccache-action@v0.0.3 @@ -134,14 +134,14 @@ jobs: - name: Get CMake uses: lukka/get-cmake@latest with: - cmakeVersion: '3.16.3' + cmakeVersion: '3.21.0' - name: Print CMake version run: cmake --version - name: configure run: > - export PATH=/usr/local/opt/qt5/bin:$PATH; + export PATH=/usr/local/opt/qt/bin:$PATH; cmake -B build -G Ninja @@ -197,8 +197,8 @@ jobs: ${{env.MINGW_PACKAGE_PREFIX}}-libtiff ${{env.MINGW_PACKAGE_PREFIX}}-ninja ${{env.MINGW_PACKAGE_PREFIX}}-pkg-config - ${{env.MINGW_PACKAGE_PREFIX}}-qt5-base - ${{env.MINGW_PACKAGE_PREFIX}}-qt5-svg + ${{env.MINGW_PACKAGE_PREFIX}}-qt6-base + ${{env.MINGW_PACKAGE_PREFIX}}-qt6-svg ${{env.MINGW_PACKAGE_PREFIX}}-zlib - name: Run sccache-cache @@ -233,7 +233,7 @@ jobs: runs-on: ubuntu-latest env: - QT_SELECT: qt5 + QT_SELECT: qt6 steps: - uses: actions/checkout@v1 diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index c09ba1db45..b035d01c19 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -11,7 +11,7 @@ jobs: - uses: ZedThree/clang-tidy-review@v0.17.0 id: review with: - apt_packages: g++,libqt5opengl5-dev,libqt5svg5-dev,libglvnd-dev,libeigen3-dev,zlib1g-dev,libfftw3-dev,ninja-build + apt_packages: g++,qt6-base-dev,libqt6opengl6-dev,libglvnd-dev,libeigen3-dev,zlib1g-dev,libfftw3-dev,ninja-build cmake_command: cmake . -DCMAKE_EXPORT_COMPILE_COMMANDS=on config_file: .clang-tidy diff --git a/CMakeLists.txt b/CMakeLists.txt index 90638abdeb..afa90c3711 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") set(MRTRIX_BASE_VERSION "${CMAKE_PROJECT_VERSION}") option(MRTRIX_BUILD_GUI "Build the MRtrix3 GUI" ON) -option(MRTRIX_USE_QT6 "Use Qt6 to build" OFF) +option(MRTRIX_USE_QT5 "Use Qt 5 to build" OFF) option(MRTRIX_WARNINGS_AS_ERRORS "Compiler warnings result in compilation errors" OFF) option(MRTRIX_STL_DEBUGGING "Enable STL debug mode" OFF) option(MRTRIX_BUILD_TESTS "Build tests executables" OFF) @@ -22,10 +22,10 @@ if(MRTRIX_BUILD_TESTS) enable_testing() endif() -if(MRTRIX_USE_QT6) - set(QT_MAJOR_VERSION 6) -else() +if(MRTRIX_USE_QT5) set(QT_MAJOR_VERSION 5) +else() + set(QT_MAJOR_VERSION 6) endif() set(CMAKE_CXX_STANDARD 17) diff --git a/README.md b/README.md index e05fa79674..1eaf3655b1 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,9 @@ You can address all *MRtrix3*-related queries there, using your GitHub or Google $ cmake --install build It's **highly** recommended, that you use [Ninja](https://ninja-build.org/) and a compiler caching tool like [ccache](https://ccache.dev/) or [sccache](https://github.com/mozilla/sccache) to speed up compilation time. You can install these tools using your package manager (e.g. `apt install ninja-build ccache` or `brew install ninja ccache`). Then, add `-GNinja` to the third step above or set the environment variable `CMAKE_GENERATOR` variable to `Ninja`. + + NOTE: by default MRtrix3 will build using Qt 6, but if you wish to use Qt 5 + you can specify this by passing `-DMRTRIX_USE_QT5=ON` when configuring the build. 3. Set the `PATH`: diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 05d9428b3f..2d7d8b7562 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,12 +4,12 @@ list(FILTER HEADLESS_SOURCES EXCLUDE REGEX "gui/.*") file(GLOB_RECURSE GUI_SOURCES gui/*.h gui/*.cpp) if(MRTRIX_BUILD_GUI) - if(MRTRIX_USE_QT6) - find_package(Qt6 COMPONENTS Core Gui Widgets OpenGL Network OpenGLWidgets REQUIRED) - qt6_add_resources(RCC_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../icons/icons.qrc) - else() + if(MRTRIX_USE_QT5) find_package(Qt5 COMPONENTS Core Gui Widgets OpenGL Network REQUIRED) qt5_add_resources(RCC_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../icons/icons.qrc) + else() + find_package(Qt6 COMPONENTS Core Gui Widgets OpenGL Network OpenGLWidgets REQUIRED) + qt6_add_resources(RCC_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../icons/icons.qrc) endif() find_package(OpenGL REQUIRED) find_package(Threads REQUIRED) @@ -79,7 +79,7 @@ if(MRTRIX_BUILD_GUI) Threads::Threads ${OPENGL_LIBRARIES} ) - if(MRTRIX_USE_QT6) + if(NOT MRTRIX_USE_QT5) target_link_libraries(mrtrix-gui PUBLIC Qt6::OpenGLWidgets) endif() endif()