Force use of C++17

Routing use c++17 features (e.g. structured binding)
ref: https://en.cppreference.com/w/cpp/language/structured_binding
This commit is contained in:
Mizux Seiha
2020-08-11 12:19:52 +02:00
parent d4d88e1f64
commit f992206a9a
30 changed files with 55 additions and 37 deletions

View File

@@ -231,10 +231,10 @@ fi
#############
if [ "${BUILDER}" == bazel ]; then
echo 'travis_fold:start:build'
bazel build --curses=no --copt='-Wno-sign-compare' //...:all
bazel build --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all
echo 'travis_fold:end:build'
echo 'travis_fold:start:test'
bazel test -c opt --curses=no --copt='-Wno-sign-compare' //...:all
bazel test -c opt --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all
echo 'travis_fold:end:test'
fi

View File

@@ -47,6 +47,10 @@ message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}")
#message(STATUS "minor: ${PROJECT_VERSION_MINOR}")
#message(STATUS "patch: ${PROJECT_VERSION_PATCH}")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Default Build Type to be Release
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING

View File

@@ -28,5 +28,10 @@ OR-Tools depends on severals mandatory libraries.
* Google Gtest,
* GLPK (GNU Linear Programming Kit)
## Compilation
You must compile OR-Tools using C++17:
* on UNIX: `--cxxopt=-std=c++17`
* on Windows when using MSVC: `--cxxopt="-std:c++17"`
## [Integrating OR-Tools in your Bazel Project](#integration)
TODO

View File

@@ -13,7 +13,7 @@ WORKDIR /home/lib
COPY . .
FROM devel as build
RUN bazel build --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel build --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all
FROM build as test
RUN bazel test -c opt --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel test -c opt --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all

View File

@@ -12,7 +12,7 @@ WORKDIR /home/lib
COPY . .
FROM devel as build
RUN bazel build --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel build --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all
FROM build as test
RUN bazel test -c opt --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel test -c opt --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all

View File

@@ -23,7 +23,7 @@ WORKDIR /home/lib
COPY . .
FROM devel as build
RUN bazel build --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel build --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all
FROM build as test
RUN bazel test -c opt --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel test -c opt --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all

View File

@@ -24,7 +24,7 @@ WORKDIR /home/lib
COPY . .
FROM devel as build
RUN bazel build --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel build --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all
FROM build as test
RUN bazel test -c opt --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel test -c opt --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all

View File

@@ -19,7 +19,7 @@ WORKDIR /home/lib
COPY . .
FROM devel as build
RUN bazel build --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel build --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all
FROM build as test
RUN bazel test -c opt --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel test -c opt --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all

View File

@@ -15,7 +15,7 @@ WORKDIR /home/lib
COPY . .
FROM devel as build
RUN bazel build --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel build --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all
FROM build as test
RUN bazel test -c opt --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel test -c opt --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all

View File

@@ -27,7 +27,7 @@ WORKDIR /home/lib
COPY . .
FROM devel as build
RUN bazel build --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel build --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all
FROM build as test
RUN bazel test -c opt --curses=no --copt='-Wno-sign-compare' //...:all
RUN bazel test -c opt --curses=no --cxxopt=-std=c++17 --copt='-Wno-sign-compare' //...:all

View File

@@ -184,11 +184,11 @@ target_include_directories(${PROJECT_NAME} INTERFACE
# Compile options
set_target_properties(${PROJECT_NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_11)
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_17)
target_compile_definitions(${PROJECT_NAME} PUBLIC ${OR_TOOLS_COMPILE_DEFINITIONS})
target_compile_options(${PROJECT_NAME} PUBLIC ${OR_TOOLS_COMPILE_OPTIONS})
@@ -277,7 +277,7 @@ endforeach()
#add_library(${PROJECT_NAME}_proto STATIC ${PROTO_SRCS} ${PROTO_HDRS})
add_library(${PROJECT_NAME}_proto OBJECT ${PROTO_SRCS} ${PROTO_HDRS})
set_target_properties(${PROJECT_NAME}_proto PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(${PROJECT_NAME}_proto PROPERTIES CXX_STANDARD 11)
set_target_properties(${PROJECT_NAME}_proto PROPERTIES CXX_STANDARD 17)
set_target_properties(${PROJECT_NAME}_proto PROPERTIES CXX_STANDARD_REQUIRED ON)
set_target_properties(${PROJECT_NAME}_proto PROPERTIES CXX_EXTENSIONS OFF)
target_include_directories(${PROJECT_NAME}_proto PRIVATE

View File

@@ -167,6 +167,9 @@ if(BUILD_Protobuf)
message(CHECK_PASS "fetched")
endif()
# Coin-OR does not support C++17 (use of 'register' storage class specifier)
set(CMAKE_CXX_STANDARD 11)
# ##############################################################################
# Coinutils
# ##############################################################################
@@ -241,3 +244,5 @@ if(BUILD_Cbc)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
endif()
set(CMAKE_CXX_STANDARD 17)

View File

@@ -5,7 +5,7 @@ include(CTest)
find_package(ortools CONFIG REQUIRED)
add_executable(sample main.cpp)
target_compile_features(sample PUBLIC cxx_std_11)
target_compile_features(sample PUBLIC cxx_std_17)
set_target_properties(sample PROPERTIES VERSION ${PROJECT_VERSION})
target_link_libraries(sample PRIVATE ortools::ortools)

View File

@@ -54,7 +54,7 @@ foreach(EXECUTABLE
weighted_tardiness_sat)
add_executable(${EXECUTABLE} ${EXECUTABLE}.cc)
target_include_directories(${EXECUTABLE} PUBLIC ${PARENT_SOURCE_DIR})
target_compile_features(${EXECUTABLE} PRIVATE cxx_std_11)
target_compile_features(${EXECUTABLE} PRIVATE cxx_std_17)
target_link_libraries(${EXECUTABLE} PRIVATE ortools::ortools)
set_target_properties(${EXECUTABLE} PROPERTIES
INSTALL_RPATH_USE_LINK_PATH TRUE)

View File

@@ -358,6 +358,8 @@ build_absl: dependencies/install/lib/libabsl.$L
dependencies/install/lib/libabsl.$L: dependencies/sources/abseil-cpp-$(ABSL_TAG) | dependencies/install
cd dependencies/sources/abseil-cpp-$(ABSL_TAG) && \
$(SET_COMPILER) $(CMAKE) -H. -Bbuild_cmake \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_CXX_STANDARD_REQUIRED=ON \
-DCMAKE_PREFIX_PATH="$(OR_TOOLS_TOP)/dependencies/install" \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_STATIC_LIBS=ON \

View File

@@ -403,6 +403,8 @@ dependencies/install/lib/absl.lib: dependencies/sources/abseil-cpp-$(ABSL_TAG) |
cd dependencies\sources\abseil-cpp-$(ABSL_TAG) && \
set MAKEFLAGS= && \
"$(CMAKE)" -H. -Bbuild_cmake \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_CXX_STANDARD_REQUIRED=ON \
-DCMAKE_PREFIX_PATH=..\..\install \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \

View File

@@ -116,7 +116,7 @@ DEBUG = -O4 -DNDEBUG
JNIDEBUG = -O1 -DNDEBUG
ifeq ($(PLATFORM),LINUX)
CCC = g++ -fPIC -std=c++11 -fwrapv
CCC = g++ -fPIC -std=c++17 -fwrapv
DYNAMIC_LD = g++ -shared
DYNAMIC_LDFLAGS = -Wl,-rpath,\"\\\$$\$$ORIGIN\"
@@ -133,7 +133,7 @@ ifeq ($(PLATFORM),LINUX)
ifdef UNIX_XPRESS_DIR
XPRESS_LNK = -L$(UNIX_XPRESS_DIR)/lib -lxprs -lxprl
endif
SYS_LNK = -lrt -lpthread -Wl,--no-as-needed -ldl
JAVA_INC = -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
JAVAC_BIN = $(shell $(WHICH) $(JAVA_HOME)/bin/javac)
@@ -161,7 +161,7 @@ ifeq ($(PLATFORM),LINUX)
endif # ifeq ($(PLATFORM),LINUX)
ifeq ($(PLATFORM),MACOSX)
MAC_VERSION = -mmacosx-version-min=$(MAC_MIN_VERSION)
CCC = clang++ -fPIC -std=c++11 $(MAC_VERSION) -stdlib=libc++
CCC = clang++ -fPIC -std=c++17 $(MAC_VERSION) -stdlib=libc++
DYNAMIC_LD = clang++ -dynamiclib -undefined dynamic_lookup \
-Wl,-search_paths_first \
-Wl,-headerpad_max_install_names \

View File

@@ -97,7 +97,7 @@ TASKKILL = taskkill
# Compilation macros.
DEBUG=/O2 -DNDEBUG
CCC=cl /EHsc /MD /nologo -nologo $(SYSCFLAGS) /D__WIN32__ /DPSAPI_VERSION=1 \
CCC=cl /std:c++17 /EHsc /MD /nologo -nologo $(SYSCFLAGS) /D__WIN32__ /DPSAPI_VERSION=1 \
/DNOMINMAX /DWIN32_LEAN_AND_MEAN=1 /D_CRT_SECURE_NO_WARNINGS
PYTHON_VERSION = $(WINDOWS_PYTHON_VERSION)

View File

@@ -10,7 +10,7 @@ set(NAME ${PROJECT_NAME}_algorithms)
#add_library(${NAME} STATIC ${_SRCS})
add_library(${NAME} OBJECT ${_SRCS})
set_target_properties(${NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON

View File

@@ -5,7 +5,7 @@ set(NAME ${PROJECT_NAME}_base)
#add_library(${NAME} STATIC ${_SRCS})
add_library(${NAME} OBJECT ${_SRCS})
set_target_properties(${NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON

View File

@@ -5,7 +5,7 @@ set(NAME ${PROJECT_NAME}_bop)
#add_library(${NAME} STATIC ${_SRCS})
add_library(${NAME} OBJECT ${_SRCS})
set_target_properties(${NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON

View File

@@ -5,7 +5,7 @@ set(NAME ${PROJECT_NAME}_constraint_solver)
#add_library(${NAME} STATIC ${_SRCS})
add_library(${NAME} OBJECT ${_SRCS})
set_target_properties(${NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON

View File

@@ -5,7 +5,7 @@ set(NAME ${PROJECT_NAME}_data)
#add_library(${NAME} STATIC ${_SRCS})
add_library(${NAME} OBJECT ${_SRCS})
set_target_properties(${NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON

View File

@@ -5,7 +5,7 @@ set(NAME ${PROJECT_NAME}_glop)
#add_library(${NAME} STATIC ${_SRCS})
add_library(${NAME} OBJECT ${_SRCS})
set_target_properties(${NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON

View File

@@ -5,7 +5,7 @@ set(NAME ${PROJECT_NAME}_graph)
#add_library(${NAME} STATIC ${_SRCS})
add_library(${NAME} OBJECT ${_SRCS})
set_target_properties(${NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON

View File

@@ -10,7 +10,7 @@ set(NAME ${PROJECT_NAME}_linear_solver)
#add_library(${NAME} STATIC ${_SRCS})
add_library(${NAME} OBJECT ${_SRCS})
set_target_properties(${NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON

View File

@@ -5,7 +5,7 @@ set(NAME ${PROJECT_NAME}_lp_data)
#add_library(${NAME} STATIC ${_SRCS})
add_library(${NAME} OBJECT ${_SRCS})
set_target_properties(${NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON

View File

@@ -5,7 +5,7 @@ set(NAME ${PROJECT_NAME}_port)
#add_library(${NAME} STATIC ${_SRCS})
add_library(${NAME} OBJECT ${_SRCS})
set_target_properties(${NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON

View File

@@ -5,7 +5,7 @@ set(NAME ${PROJECT_NAME}_sat)
#add_library(${NAME} STATIC ${_SRCS})
add_library(${NAME} OBJECT ${_SRCS})
set_target_properties(${NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON

View File

@@ -5,7 +5,7 @@ set(NAME ${PROJECT_NAME}_util)
#add_library(${NAME} STATIC ${_SRCS})
add_library(${NAME} OBJECT ${_SRCS})
set_target_properties(${NAME} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON