Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake Make和C++;17语言特征 我用嵌套命名空间直接编译一组C++源文件时,用< C> C++-STD= C++ +1Z-WALTE/WORK>不发出警告。p>_Cmake_Clang_C++17 - Fatal编程技术网

Cmake Make和C++;17语言特征 我用嵌套命名空间直接编译一组C++源文件时,用< C> C++-STD= C++ +1Z-WALTE/WORK>不发出警告。p>

Cmake Make和C++;17语言特征 我用嵌套命名空间直接编译一组C++源文件时,用< C> C++-STD= C++ +1Z-WALTE/WORK>不发出警告。p>,cmake,clang,c++17,Cmake,Clang,C++17,尝试使用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 com

尝试使用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

叮当声版本:6.0.0-1ubuntu2


目标:x86_64-pc-linux-gnu

使用
VERBOSE=1
选项进行
make
以查看用于编译源代码的实际命令行。检查此命令行是否包含预期的编译器选项。/usr/bin/c++-Dcetus\u NL\u EXPORTS-I/home/acoville/Desktop/cetus/NL/src-fPIC-o CMakeFiles/cetus\u NL.dir/haversine.cpp.o-c/cetus/NL/src/haversine.cpp是的,似乎您以错误的方式设置了编译器标志。请注意,不仅
set
命令很重要,它相对于
project()
调用的位置也很重要。确保您已看到有关此主题的其他问题,例如,请参阅关于设置语言功能。否则,将变量设置为
project()
命令之前的缓存项,或将其作为工具链文件的一部分,或在命令行上设置为-D。
CMAKE\u CXX\u FLAGS\u INIT
用于第一次运行CMAKE时初始化。不要使用
\u INIT
,它们不适用于此。执行
target\u compile\u功能(${target\u NAME}私有cxx\u std\u 17)
。在旧的cmake中,您将执行
set(cmake_CXX_FLAGS“${cmake_CXX_FLAGS}-std=c++1z”)