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

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

我正在尝试通过运行以下命令在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>( )

我发现this答案谈论-Wno-c++11-narrowing标志来忽略该错误。

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

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

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

c++ node.js c++11 npm clang++
1个回答
0
投票

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

但是您实际上并不希望将-std编译器选项设置为“ c ++ 11 = -Wno-c ++ 11-narrowing”-您真正想要的是两个参数,中间用空格分隔。

问题是您不能只停留在空格中,因为CXXFLAGS=-std=c++11 -Wno-c++11-narrowing ...试图运行一个名为“ -Wno-c ++ 11-narrowing”的命令。

解决方案是用反斜杠转义空格,以使shell不会将其解释为变量和命令之间的分隔符。

您真正想要的是:

CXXFLAGS=-std=c++11\ -Wno-c++11-narrowing npm i -g opencv4nodejs
© www.soinside.com 2019 - 2024. All rights reserved.