每次我尝试编译使用
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
之外编译得很好,物有所值。