From 4a4a2d49b5d88789f06f3da7b16480a025adeb19 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Mon, 13 Oct 2025 11:50:28 -0500 Subject: [PATCH 1/4] add support for c++20 --- cpp/CMakeLists.txt | 4 ++-- cpp/libmps_parser/CMakeLists.txt | 2 +- cpp/libmps_parser/tests/CMakeLists.txt | 2 +- cpp/tests/examples/routing/CMakeLists.txt | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 90bb1c57f..a4a75b849 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -229,9 +229,9 @@ set_target_properties(cuopt INSTALL_RPATH "\$ORIGIN" # set target compile options - CXX_STANDARD 17 + CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON - CUDA_STANDARD 17 + CUDA_STANDARD 20 CUDA_STANDARD_REQUIRED ON INTERFACE_POSITION_INDEPENDENT_CODE ON ) diff --git a/cpp/libmps_parser/CMakeLists.txt b/cpp/libmps_parser/CMakeLists.txt index af09ebd2c..79305a2d4 100644 --- a/cpp/libmps_parser/CMakeLists.txt +++ b/cpp/libmps_parser/CMakeLists.txt @@ -89,7 +89,7 @@ set_target_properties(mps_parser INSTALL_RPATH "\$ORIGIN" # set target compile options - CXX_STANDARD 17 + CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON INTERFACE_POSITION_INDEPENDENT_CODE ON ) diff --git a/cpp/libmps_parser/tests/CMakeLists.txt b/cpp/libmps_parser/tests/CMakeLists.txt index eaa52de69..0ecdb3666 100644 --- a/cpp/libmps_parser/tests/CMakeLists.txt +++ b/cpp/libmps_parser/tests/CMakeLists.txt @@ -23,7 +23,7 @@ function(ConfigureTest CMAKE_TEST_NAME) set_target_properties(${CMAKE_TEST_NAME} PROPERTIES # set target compile options - CXX_STANDARD 17 + CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON INTERFACE_POSITION_INDEPENDENT_CODE ON ) diff --git a/cpp/tests/examples/routing/CMakeLists.txt b/cpp/tests/examples/routing/CMakeLists.txt index 52bc3e682..9c9c6a375 100644 --- a/cpp/tests/examples/routing/CMakeLists.txt +++ b/cpp/tests/examples/routing/CMakeLists.txt @@ -27,7 +27,7 @@ set_target_properties( pdptw_mixed_fleet cvrp_daily_deliveries PROPERTIES - CUDA_STANDARD 17 + CUDA_STANDARD 20 CUDA_STANDARD_REQUIRED ON ) From f4352e2742f26d076ba3bed7b1c18b2618f4ae36 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Wed, 7 Jan 2026 14:00:05 -0600 Subject: [PATCH 2/4] fix style --- cpp/libmps_parser/CMakeLists.txt | 2 +- cpp/libmps_parser/tests/CMakeLists.txt | 2 +- cpp/tests/examples/routing/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cpp/libmps_parser/CMakeLists.txt b/cpp/libmps_parser/CMakeLists.txt index d093ec49a..ccb0b6585 100644 --- a/cpp/libmps_parser/CMakeLists.txt +++ b/cpp/libmps_parser/CMakeLists.txt @@ -1,5 +1,5 @@ # cmake-format: off -# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 # cmake-format: on diff --git a/cpp/libmps_parser/tests/CMakeLists.txt b/cpp/libmps_parser/tests/CMakeLists.txt index ca3787741..9ab9d3182 100644 --- a/cpp/libmps_parser/tests/CMakeLists.txt +++ b/cpp/libmps_parser/tests/CMakeLists.txt @@ -1,5 +1,5 @@ # cmake-format: off -# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2024-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 # cmake-format: on diff --git a/cpp/tests/examples/routing/CMakeLists.txt b/cpp/tests/examples/routing/CMakeLists.txt index cb029e887..a91a04957 100644 --- a/cpp/tests/examples/routing/CMakeLists.txt +++ b/cpp/tests/examples/routing/CMakeLists.txt @@ -1,5 +1,5 @@ # cmake-format: off -# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 # cmake-format: on From 34bbe46825725a0485084370416155ec9c9b17b3 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 9 Jan 2026 10:43:45 -0600 Subject: [PATCH 3/4] fix bug --- cpp/CMakeLists.txt | 30 ++++++++++++++++++++++++++ cpp/libmps_parser/CMakeLists.txt | 4 ++++ cpp/libmps_parser/tests/CMakeLists.txt | 1 + 3 files changed, 35 insertions(+) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index e33875903..6a505afd1 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -29,6 +29,9 @@ project( LANGUAGES CXX CUDA C ) +# Disable C++20 module scanning as the codebase doesn't use modules +set(CMAKE_CXX_SCAN_FOR_MODULES OFF CACHE BOOL "Disable C++20 module scanning") + rapids_cmake_write_version_file(include/cuopt/version_config.hpp) # ################################################################################################## # - build type ------------------------------------------------------------------------------------ @@ -221,6 +224,7 @@ set_target_properties(cuopt CUDA_STANDARD 20 CUDA_STANDARD_REQUIRED ON INTERFACE_POSITION_INDEPENDENT_CODE ON + CXX_SCAN_FOR_MODULES OFF ) target_compile_definitions(cuopt PUBLIC "CUOPT_LOG_ACTIVE_LEVEL=RAPIDS_LOGGER_LOG_LEVEL_${LIBCUOPT_LOGGING_LEVEL}") @@ -419,6 +423,14 @@ endif() if(NOT BUILD_LP_ONLY) add_executable(cuopt_cli cuopt_cli.cpp) + +set_target_properties(cuopt_cli + PROPERTIES + CXX_STANDARD 20 + CXX_STANDARD_REQUIRED ON + CXX_SCAN_FOR_MODULES OFF +) + target_compile_options(cuopt_cli PRIVATE "$<$:${CUOPT_CXX_FLAGS}>" "$<$:${CUOPT_CUDA_FLAGS}>" @@ -459,6 +471,14 @@ endif() option(BUILD_MIP_BENCHMARKS "Build MIP benchmarks" OFF) if(BUILD_MIP_BENCHMARKS AND NOT BUILD_LP_ONLY) add_executable(solve_MIP ../benchmarks/linear_programming/cuopt/run_mip.cpp) + + set_target_properties(solve_MIP + PROPERTIES + CXX_STANDARD 20 + CXX_STANDARD_REQUIRED ON + CXX_SCAN_FOR_MODULES OFF + ) + target_compile_options(solve_MIP PRIVATE "$<$:${CUOPT_CXX_FLAGS}>" "$<$:${CUOPT_CUDA_FLAGS}>" @@ -483,6 +503,16 @@ endif() option(BUILD_LP_BENCHMARKS "Build LP benchmarks" OFF) if(BUILD_LP_BENCHMARKS) add_executable(solve_LP ../benchmarks/linear_programming/cuopt/run_pdlp.cu) + + set_target_properties(solve_LP + PROPERTIES + CXX_STANDARD 20 + CXX_STANDARD_REQUIRED ON + CUDA_STANDARD 20 + CUDA_STANDARD_REQUIRED ON + CXX_SCAN_FOR_MODULES OFF + ) + target_compile_options(solve_LP PRIVATE "$<$:${CUOPT_CXX_FLAGS}>" "$<$:${CUOPT_CUDA_FLAGS}>" diff --git a/cpp/libmps_parser/CMakeLists.txt b/cpp/libmps_parser/CMakeLists.txt index ccb0b6585..4fe497157 100644 --- a/cpp/libmps_parser/CMakeLists.txt +++ b/cpp/libmps_parser/CMakeLists.txt @@ -16,6 +16,9 @@ project( LANGUAGES CXX ) +# Disable C++20 module scanning as the codebase doesn't use modules +set(CMAKE_CXX_SCAN_FOR_MODULES OFF CACHE BOOL "Disable C++20 module scanning") + # Write the version header rapids_cmake_write_version_file(include/mps_parser/version_config.hpp) @@ -82,6 +85,7 @@ set_target_properties(mps_parser CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON INTERFACE_POSITION_INDEPENDENT_CODE ON + CXX_SCAN_FOR_MODULES OFF ) target_compile_options(mps_parser diff --git a/cpp/libmps_parser/tests/CMakeLists.txt b/cpp/libmps_parser/tests/CMakeLists.txt index 9ab9d3182..b39a09607 100644 --- a/cpp/libmps_parser/tests/CMakeLists.txt +++ b/cpp/libmps_parser/tests/CMakeLists.txt @@ -16,6 +16,7 @@ function(ConfigureTest CMAKE_TEST_NAME) CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON INTERFACE_POSITION_INDEPENDENT_CODE ON + CXX_SCAN_FOR_MODULES OFF ) target_include_directories(${CMAKE_TEST_NAME} From 823d84fc45c9b49cfce9827b3c120086dabd6445 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Fri, 9 Jan 2026 10:45:11 -0600 Subject: [PATCH 4/4] fix style --- cpp/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 6a505afd1..86268cff1 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -471,14 +471,14 @@ endif() option(BUILD_MIP_BENCHMARKS "Build MIP benchmarks" OFF) if(BUILD_MIP_BENCHMARKS AND NOT BUILD_LP_ONLY) add_executable(solve_MIP ../benchmarks/linear_programming/cuopt/run_mip.cpp) - + set_target_properties(solve_MIP PROPERTIES CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON CXX_SCAN_FOR_MODULES OFF ) - + target_compile_options(solve_MIP PRIVATE "$<$:${CUOPT_CXX_FLAGS}>" "$<$:${CUOPT_CUDA_FLAGS}>" @@ -503,7 +503,7 @@ endif() option(BUILD_LP_BENCHMARKS "Build LP benchmarks" OFF) if(BUILD_LP_BENCHMARKS) add_executable(solve_LP ../benchmarks/linear_programming/cuopt/run_pdlp.cu) - + set_target_properties(solve_LP PROPERTIES CXX_STANDARD 20 @@ -512,7 +512,7 @@ if(BUILD_LP_BENCHMARKS) CUDA_STANDARD_REQUIRED ON CXX_SCAN_FOR_MODULES OFF ) - + target_compile_options(solve_LP PRIVATE "$<$:${CUOPT_CXX_FLAGS}>" "$<$:${CUOPT_CUDA_FLAGS}>"