代码之家  ›  专栏  ›  技术社区  ›  Bitcoin Cash - ADA enthusiast

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

  •  0
  • Bitcoin Cash - ADA enthusiast  · 技术社区  · 6 年前

    我试图通过运行以下命令在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 命令

    0 回复  |  直到 6 年前
        1
  •  1
  •   Jerry Jeremiah    6 年前

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

    但是,您并不是真的希望将-std编译器选项设置为“c++11=-Wno-c++11窄化”——您真正想要的是两个由空格分隔的参数。

    问题是,你不能因为 CXXFLAGS=-std=c++11 -Wno-c++11-narrowing ... 尝试运行名为“-Wno-c++11缩小”的命令。

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

    你真正想要的是:

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