Мой файл cmake:
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_COMPILER "gcc-7")
project(invertedindex)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wconversion -O0")
set(SOURCE_FILES main.cpp inverted_index.hpp params.hpp)
add_executable(invertedindex ${SOURCE_FILES})
К счастью, я посмотрел на сгенерированную команду компилятора
/usr/local/bin/gcc-7 -Wall -Wextra -Wconversion -O0 -std=gnu++1z -o CMakeFiles/invertedindex.dir/main.cpp.o -c /Users/adam/school/cpp/invertedindex/main.cpp
и пила -std=gnu++1z
. Мне не интересно изучать долгие часы, что это за хрень и почему она там, когда у меня
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
Он подозревает, что -std = gnu ++ 1z не является стабильной, законченной библиотекой или sth. Но gcc 7 поддерживает большинство функций стандарта c ++ 17.
Когда я понял, что он должен работать, я вручную заменил сгенерированный параметр команды на -std=gnu++17
, и он заработал. В чем дело? Как мне заставить это работать в cmake?