Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
- Targets Linux (glibc 2.28+), macOS (11.0+), and Windows on x86_64 and arm64
architectures
- C++20
- CMake 3.24+
- CMake 3.28+
- `FetchContent` for dependency management (configured in
`cmake/ExternalDependencies.cmake`)
- `clang-format` and `clang-tidy` for formatting/linting (see `.clang-format`
Expand Down
15 changes: 2 additions & 13 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@
# Licensed under the MIT License

# set required cmake version
cmake_minimum_required(VERSION 3.24...4.4)
cmake_minimum_required(VERSION 3.28...4.4)

project(
mqt-ddsim
LANGUAGES C CXX
DESCRIPTION "MQT DDSIM - A quantum circuit simulator based on decision diagrams")

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)

option(BUILD_MQT_DDSIM_BINDINGS "Build the MQT DDSIM Python bindings" OFF)
if(BUILD_MQT_DDSIM_BINDINGS)
Expand Down Expand Up @@ -49,18 +50,6 @@ option(BUILD_MQT_DDSIM_TESTS "Also build tests for the MQT DDSIM project"
${MQT_DDSIM_MASTER_PROJECT})
option(BUILD_MQT_DDSIM_CLI "Build the MQT DDSIM command line interface" ${MQT_DDSIM_MASTER_PROJECT})

# on macOS with GCC, disable module scanning
# https://www.reddit.com/r/cpp_questions/comments/1kwlkom/comment/ni5angh/
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.28")
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
else()
message(WARNING "CMake 3.28+ is required to disable C++ module scanning on macOS with GCC. "
"Current version: ${CMAKE_VERSION}. "
"Consider upgrading CMake to avoid potential build issues.")
endif()
endif()

include(cmake/ExternalDependencies.cmake)

# set the include directory for the build tree
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ print(counts)
## System Requirements and Building

Building the project requires a C++ compiler with support for C++20 and CMake
3.24 or newer. For details on how to build the project, please refer to the
3.28 or newer. For details on how to build the project, please refer to the
[documentation](https://mqt.readthedocs.io/projects/ddsim). Building (and
running) is continuously tested under Linux, macOS, and Windows using the
[latest available system versions for GitHub Actions](https://github.com/actions/runner-images).
Expand Down
3 changes: 2 additions & 1 deletion UPGRADING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ of changes including minor and patch releases, please refer to the

## [Unreleased]

This release updates the minimum required `mqt-core` version to 3.10.0.
This release updates the minimum required `mqt-core` version to 3.10.0 and
requires CMake 3.28 or newer.

### macOS support

Expand Down
9 changes: 3 additions & 6 deletions cmake/ExternalDependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -46,17 +46,14 @@ FetchContent_Declare(
mqt-core
GIT_REPOSITORY https://github.com/${MQT_CORE_REPO_OWNER}/core.git
GIT_TAG ${MQT_CORE_REV}
FIND_PACKAGE_ARGS ${MQT_CORE_MINIMUM_VERSION})
EXCLUDE_FROM_ALL FIND_PACKAGE_ARGS ${MQT_CORE_MINIMUM_VERSION})
list(APPEND FETCH_PACKAGES mqt-core)

set(JSON_VERSION
3.12.0
CACHE STRING "nlohmann_json version")
set(JSON_URL https://github.com/nlohmann/json/releases/download/v${JSON_VERSION}/json.tar.xz)
set(JSON_SystemInclude
ON
CACHE INTERNAL "Treat the library headers like system headers")
FetchContent_Declare(nlohmann_json URL ${JSON_URL} FIND_PACKAGE_ARGS ${JSON_VERSION})
FetchContent_Declare(nlohmann_json URL ${JSON_URL} SYSTEM FIND_PACKAGE_ARGS ${JSON_VERSION})
list(APPEND FETCH_PACKAGES nlohmann_json)

if(BUILD_MQT_DDSIM_TESTS)
Expand Down Expand Up @@ -84,7 +81,7 @@ set(TF_VERSION
3.7.0
CACHE STRING "Taskflow version")
set(TF_URL https://github.com/taskflow/taskflow/archive/refs/tags/v${TF_VERSION}.tar.gz)
FetchContent_Declare(taskflow URL ${TF_URL} FIND_PACKAGE_ARGS)
FetchContent_Declare(taskflow URL ${TF_URL} SYSTEM FIND_PACKAGE_ARGS)
list(APPEND FETCH_PACKAGES taskflow)

if(BUILD_MQT_DDSIM_CLI)
Expand Down
2 changes: 1 addition & 1 deletion docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ instructions on how to set up your development environment.

Building the project requires a C++20-capable
[C++ compiler](https://en.wikipedia.org/wiki/List_of_compilers#C++_compilers)
and [CMake](https://cmake.org/) 3.24 or newer. As of August 2025, our CI
and [CMake](https://cmake.org/) 3.28 or newer. As of August 2025, our CI
pipeline on GitHub continuously tests the library across the following matrix of
systems and compilers:

Expand Down
2 changes: 1 addition & 1 deletion docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ pip install mqt.ddsim --no-binary mqt.ddsim

This requires a C++20-capable
[C++ compiler](https://en.wikipedia.org/wiki/List_of_compilers#C++_compilers)
and [CMake](https://cmake.org/) 3.24 or newer.
and [CMake](https://cmake.org/) 3.28 or newer.

## Integrating MQT DDSIM into Your Project

Expand Down
5 changes: 0 additions & 5 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,6 @@ if(NOT TARGET MQT::DDSim)
PUBLIC MQT::CoreDD Taskflow nlohmann_json::nlohmann_json
PRIVATE MQT::ProjectWarnings MQT::ProjectOptions)

# the following sets the SYSTEM flag for the include dirs of the taskflow libs
set_target_properties(
Taskflow PROPERTIES INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
$<TARGET_PROPERTY:Taskflow,INTERFACE_INCLUDE_DIRECTORIES>)

# add MQT alias
add_library(MQT::DDSim ALIAS ${MQT_DDSIM_TARGET_NAME})
endif()
Loading