Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.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

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
C++ 编译C++;17带有cmake的代码在constexpr令牌中给出错误_C++_Cmake - Fatal编程技术网

C++ 编译C++;17带有cmake的代码在constexpr令牌中给出错误

C++ 编译C++;17带有cmake的代码在constexpr令牌中给出错误,c++,cmake,C++,Cmake,我试图为这个项目添加一个CMakeLists.txt:这非常简单 这就是我所做的: cmake_minimum_required(VERSION 3.5) project(literal_ipaddr) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) add_l

我试图为这个项目添加一个CMakeLists.txt:这非常简单

这就是我所做的:

cmake_minimum_required(VERSION 3.5)
project(literal_ipaddr)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_library (literal_ipaddr ipaddr.cc)
set_property(TARGET literal_ipaddr PROPERTY CXX_STANDARD 17)
但是我主要在
constexpr
token中得到错误:

/home/user/libopenvpn/literal_ipaddr/ipaddr.h:100:21: error: expected ‘(’ before ‘constexpr’
             else if constexpr ( base == 16 )
                     ^~~~~~~~~
/home/user/libopenvpn/literal_ipaddr/ipaddr.h: In lambda function:
/home/user/libopenvpn/literal_ipaddr/ipaddr.h:327:51: error: expected ‘{’ before ‘constexpr’
             auto remaining_chars = [](size_t pos) constexpr { return N - 1 - pos; };
                                                   ^~~~~~~~~
/home/user/libopenvpn/literal_ipaddr/ipaddr.h: In function ‘constexpr int IPAddr::details::inet6_aton(const char (&)[N], in6_addr&)’:
/home/user/libopenvpn/literal_ipaddr/ipaddr.h:327:51: error: expected ‘,’ or ‘;’ before ‘constexpr’
/home/user/libopenvpn/literal_ipaddr/ipaddr.h: In function ‘constexpr auto IPAddr::inet_pton(const char (&)[N])’:
/home/user/libopenvpn/literal_ipaddr/ipaddr.h:430:12: error: expected ‘(’ before ‘constexpr’
         if constexpr (AddressF == AF_INET ) {

查看项目的
Makefile
:。唯一缺少的是
-Wno缺少字段初始值设定项。是否有必要,如果有,如何在cmake中执行?

请尝试创建一个失败代码的列表,以在问题本身中向我们展示(使其自包含)。另外,您使用的编译器是什么?它的哪个版本?很可能是编译器版本问题。如果您的Makefile实际使用该编译器,您可以尝试在CMake文件的末尾添加
target\u compile\u选项(literal\u ipaddr PUBLIC-Wno missing field initializers)
。对于
集(CMake\u CXX\u标准17)
和VS2017您可能需要比CMake 3.5更新的版本。(因此,
cmake\u最低要求(3.5版)
对我来说似乎过于乐观了。)好了,这是cmake 3.10:你检查过类似的错误消息吗?您使用的是什么版本的
gcc