如何将 C++11 标志传递给 "npm install"?

How to pass C++11 flag down to "npm install"?

我正在尝试通过 运行 此命令在 MAC 上安装 "opencv4nodejs" 软件包:

CXXFLAGS=-std=gnu++11 npm i -g opencv4nodejs

这给了我以下错误:

/usr/local/lib/node_modules/opencv4nodejs/node_modules/opencv-build/opencv/opencv/modules/highgui/src/window_cocoa.mm:269:25: error: non-constant-expression cannot be narrowed from type 'int' to 'CGFloat' (aka 'double') in initializer list [-Wc++11-narrowing]
        NSSize size = { width, height };
                        ^~~~~
/usr/local/lib/node_modules/opencv4nodejs/node_modules/opencv-build/opencv/opencv/modules/highgui/src/window_cocoa.mm:269:25: note: insert an explicit cast to silence this issue
        NSSize size = { width, height };
                        ^~~~~
                        static_cast<CGFloat>( )
/usr/local/lib/node_modules/opencv4nodejs/node_modules/opencv-build/opencv/opencv/modules/highgui/src/window_cocoa.mm:269:32: error: non-constant-expression cannot be narrowed from type 'int' to 'CGFloat' (aka 'double') in initializer list [-Wc++11-narrowing]
        NSSize size = { width, height };
                               ^~~~~~
/usr/local/lib/node_modules/opencv4nodejs/node_modules/opencv-build/opencv/opencv/modules/highgui/src/window_cocoa.mm:269:32: note: insert an explicit cast to silence this issue
        NSSize size = { width, height };
                               ^~~~~~
                               static_cast<CGFloat>( )

我找到了 回答,其中讨论了 -Wno-c++11-narrowing 标志以忽略该错误。

问题是我不知道如何将该标志传递给 npm 命令。

我试过:CXXFLAGS=-std=c++11=-Wno-c++11-narrowing npm i -g opencv4nodejs 没有成功。

如何将 C++ 标志传递给 npm 命令?

命令 CXXFLAGS=-std=c++11=-Wno-c++11-narrowing npm i -g opencv4nodejs 将 CXXFLAGS 变量设置为“-std=c++11=-Wno-c++11-narrowing”并且 运行s npm 命令。

但您并不真的希望将 -std 编译器选项设置为 "c++11=-Wno-c++11-narrowing" - 您真正想要的是用 space.

分隔的两个参数

问题是您不能只使用 space,因为 CXXFLAGS=-std=c++11 -Wno-c++11-narrowing ... 试图 运行 一个名为“-Wno-c++11-narrowing”的命令。

解决方案是用反斜杠转义 space,这样 shell 就不会将其解释为变量和命令之间的分隔符。

你真正想要的是:

CXXFLAGS=-std=c++11\ -Wno-c++11-narrowing npm i -g opencv4nodejs