From 486bd407af2474fdb376a0913e8d71913a2f3015 Mon Sep 17 00:00:00 2001 From: Corentin Le Molgat Date: Mon, 14 Mar 2022 13:46:44 +0100 Subject: [PATCH] cmake: Use C++20 for MSVC, C++17 otherwise make: Unix use C++17 --- CMakeLists.txt | 6 +++++- cmake/dependencies/CMakeLists.txt | 6 +++++- makefiles/Makefile.port.mk | 8 ++++---- ortools/pdlp/CMakeLists.txt | 12 +++++++----- tools/Makefile.cc.java.dotnet | 2 +- 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 54a87fa051..dcf6d9d4db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,11 @@ message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}") #message(STATUS "minor: ${PROJECT_VERSION_MINOR}") #message(STATUS "patch: ${PROJECT_VERSION_PATCH}") -set(CMAKE_CXX_STANDARD 20) +if (MSVC) + set(CMAKE_CXX_STANDARD 20) +else() + set(CMAKE_CXX_STANDARD 17) +endif() set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/cmake/dependencies/CMakeLists.txt b/cmake/dependencies/CMakeLists.txt index 6e34168b4f..c726cb6a10 100644 --- a/cmake/dependencies/CMakeLists.txt +++ b/cmake/dependencies/CMakeLists.txt @@ -304,4 +304,8 @@ if(BUILD_Cbc) message(CHECK_PASS "fetched") endif() -set(CMAKE_CXX_STANDARD 20) +if(MSVC) + set(CMAKE_CXX_STANDARD 20) +else() + set(CMAKE_CXX_STANDARD 17) +endif() diff --git a/makefiles/Makefile.port.mk b/makefiles/Makefile.port.mk index 808f840691..a92c9da8a8 100644 --- a/makefiles/Makefile.port.mk +++ b/makefiles/Makefile.port.mk @@ -65,7 +65,7 @@ ifneq ($(PLATFORM),WIN64) PLATFORM = LINUX CXX ?= g++ - CCC = $(CXX) -fPIC -std=c++20 -fwrapv + CCC = $(CXX) -fPIC -std=c++17 -fwrapv L = so # This is needed to find libz.a @@ -89,7 +89,7 @@ ifneq ($(PLATFORM),WIN64) LINK_FLAGS = \ -Wl,-rpath,'$$ORIGIN' \ -Wl,-rpath,'$$ORIGIN/../lib64' \ - -Wl,-rpath,'$$ORIGIN/../lib' + -Wl,-rpath,'$$ORIGIN/../lib' DISTRIBUTION_ID = $(shell lsb_release -i -s) DISTRIBUTION_NUMBER = $(shell lsb_release -r -s) DISTRIBUTION = $(DISTRIBUTION_ID)-$(DISTRIBUTION_NUMBER) @@ -144,7 +144,7 @@ ifneq ($(PLATFORM),WIN64) MAC_MIN_VERSION = 10.15 MAC_VERSION = -mmacosx-version-min=$(MAC_MIN_VERSION) CXX ?= clang++ - CCC = $(CXX) -fPIC -std=c++20 $(MAC_VERSION) -stdlib=libc++ + CCC = $(CXX) -fPIC -std=c++17 $(MAC_VERSION) -stdlib=libc++ L = dylib ZLIB_LNK = -lz @@ -194,7 +194,7 @@ ifneq ($(PLATFORM),WIN64) $(GLPK_LNK) \ $(CPLEX_LNK) \ $(XPRESS_LNK) - + # language targets HAS_PYTHON ?= ON ifeq ($(PYTHON_VERSION),) diff --git a/ortools/pdlp/CMakeLists.txt b/ortools/pdlp/CMakeLists.txt index f4bb7fc43f..2686e61678 100644 --- a/ortools/pdlp/CMakeLists.txt +++ b/ortools/pdlp/CMakeLists.txt @@ -9,15 +9,17 @@ list(FILTER _SRCS EXCLUDE REGEX ".*/test.*") set(NAME ${PROJECT_NAME}_pdlp) +if(MSVC) + set(STANDARD 20) +else() + set(STANDARD 17) +endif() + # Will be merge in libortools.so #add_library(${NAME} STATIC ${_SRCS}) add_library(${NAME} OBJECT ${_SRCS}) set_target_properties(${NAME} PROPERTIES -if(WIN32) - CXX_STANDARD 20 -else() - CXX_STANDARD 17 -endif() + CXX_STANDARD ${STANDARD} CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF POSITION_INDEPENDENT_CODE ON diff --git a/tools/Makefile.cc.java.dotnet b/tools/Makefile.cc.java.dotnet index b7fb14ef0a..012c932bcc 100644 --- a/tools/Makefile.cc.java.dotnet +++ b/tools/Makefile.cc.java.dotnet @@ -67,7 +67,7 @@ ifeq ($(SYSTEM),unix) CC_BIN := $(shell command -v $(CC) 2> /dev/null) CXX_BIN := $(shell command -v $(CXX) 2> /dev/null) DEBUG = -O4 -DNDEBUG - CXXFLAGS = -fPIC -std=c++20 $(DEBUG) \ + CXXFLAGS = -fPIC -std=c++17 $(DEBUG) \ -I$(INC_DIR) -I. $(ARCH) -Wno-deprecated \ -DUSE_BOP -DUSE_GLOP -DUSE_PDLP \ -DUSE_CBC -DUSE_CLP \