Skip to content

Commit

Permalink
Merge pull request #2805 from MRtrix3/qt6_default
Browse files Browse the repository at this point in the history
Switch to Qt 6 as the default
  • Loading branch information
daljit46 authored Feb 20, 2024
2 parents 205dd53 + 1873514 commit 9a71a99
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 21 deletions.
22 changes: 11 additions & 11 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest

env:
QT_SELECT: qt5
QT_SELECT: qt6
SCCACHE_GHA_ENABLED: "true"
SCCACHE_CACHE_SIZE: "2G"

Expand All @@ -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
Expand Down Expand Up @@ -64,7 +64,7 @@ jobs:
runs-on: ubuntu-latest

env:
QT_SELECT: qt5
QT_SELECT: qt6
SCCACHE_GHA_ENABLED: "true"
SCCACHE_CACHE_SIZE: "2G"

Expand All @@ -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
Expand Down Expand Up @@ -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"

Expand All @@ -126,22 +126,22 @@ 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

- 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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -233,7 +233,7 @@ jobs:
runs-on: ubuntu-latest

env:
QT_SELECT: qt5
QT_SELECT: qt6

steps:
- uses: actions/checkout@v1
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/clang-tidy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
8 changes: 4 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`:

Expand Down
10 changes: 5 additions & 5 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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()
Expand Down

0 comments on commit 9a71a99

Please sign in to comment.