2017-08-15 119 views
1

我擁有使用C++ 17功能(特別是「shared_mutex」)的nodejs的本地附加組件。 當我打電話NPM安裝的下載和編譯附加我得到一個錯誤: enter image description here使用C++ 17編譯本機節點插件inside in ubuntu安裝npm時

Linux機器具有GCC 6.0安裝。

我Binding.gyp使用以下配置捕捉操作系統類型,並相應地添加標記:

 'conditions': [ 
     ['OS=="linux"', { 
      'CXXFLAGS': [ 
       '-std=c++1z' 
      ]}], 

**我也試着與 '-std = C++ 17',「-std = C++ 1Z」。

我錯過了什麼?

更新: 1.更新了ubuntu 16.04到GCC 16.04並將其設爲默認值。 2.看來,當我嘗試編譯它manualy使用node-gyp重建「CXXFLAGS =' - std = C++ 17'」它的工作原理和帶來只有一個錯誤: 「shared_,命名空間std沒有命名的utex一個類型std :: shared_mutex文件互斥體「(最後一個錯誤)

+0

首先,C++ 1y是14而不是17,17會是1z。其次,嘗試使用cxxflags而不是cflags。 – fmorgner

+0

你在編譯時看到傳遞給'gcc'的'-std = C++ 1y'嗎? gcc命令將在錯誤消息 – Malice

+0

之上,在6.1中添加'shared_mutex'。 (請注意,C++ 17標準還沒有完成,編譯器支持是不可預知的。) – molbdnilo

回答

1

問題已解決。對於任何有相同問題的人,bind.gyp應該使用cflags_cc而不是cxxflags。