Особенности языка Make и C ++ 17 - PullRequest
0 голосов
/ 15 октября 2019

Когда я компилирую набор исходных файлов c ++, используя вложенные пространства имен непосредственно с clang++ -std=c++1z -Wall -Wextra, я не получаю предупреждений.

Пытаясь скомпилировать те же исходные файлы с помощью CMake, я получаю следующий вывод, который кажется совершенно счастливым:

-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is Clang 6.0.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to:

Но когда я запускаю make, я получаю это везде:

warning: nested namespace
  definition is a C++17 extension; define each namespace separately [-Wc++17-extensions]

У меня есть следующая строка на верхнем уровне CMakeLists.txt:

set (CMAKE_CXX_FLAGS_INIT "-Wall -Wextra -g -std=c++1z")

Это просто проблема с Make / я должен попытаться подавить это или я делаю что-то не так сCMake?

CMake версия: 3.15.3

версия clang: 6.0.0-1ubuntu2

Цель: x86_64-pc-linux-gnu

...