我似乎无法将 std::optional 与 node-gyp 一起使用

问题描述 投票:0回答:1

每次我尝试编译使用

std::optional
node-gyp
的 C++ 代码时,我得到:

错误:命名空间“std”中没有名为“optional”的模板

我假设问题出在 C++ 标准上(因为我显然在我的代码中包含了

<optional>
标头),并且我尝试使用
cflags_cc
将其设置为 C++20(或 17),
xcode_settings.CLANG_CXX_LANGUAGE_STANDARD 
,
xcode_settings.OTHER_CFLAGS
, 等等......基本上我能找到的一切,但我无法摆脱那个错误。

我的binding.gyp供参考:

{
    "targets": [
        {
            "target_name": "clip_frame_cropper",
            "includes": ["auto.gypi"],
            "sources": ["./src/C++/clip_frame_cropper.cpp"],
            "include_dirs": ["/usr/local/include/opencv4"],
            "libraries": ["-lopencv_core", "-lopencv_imgproc", "-lopencv_videoio", "-lopencv_imgcodecs"],
            "cflags_cc": ["-std=c++20", "-Ofast"],
            "xcode_settings": {
                "CLANG_CXX_LANGUAGE_STANDARD": "c++20",
                "OTHER_CFLAGS": ["-std=c++20"],
                "OTHER_CPLUSPLUSFLAGS": ["-std=c++20"]
            }
        }
    ],
    "includes": ["auto-top.gypi"]
}

我使用的是最新版本的 macOS……此外,代码在

node-gyp
之外编译得很好,物有所值。

c++ compilation c++17 c++20 node-gyp
1个回答
0
投票

https://en.cppreference.com/w/cpp/utility/optional

std::optional
是“在标题中定义”,所以一定要
#include <optional>
.

© www.soinside.com 2019 - 2024. All rights reserved.