2014-02-13 10 views
5

Ich kompiliere über node-gyp ein Node.JS-Paket, das in C++ geschrieben wurde. Wenn ich es kompiliere, erhalte ich den folgenden Fehler: clang: error: invalid deployment target for -stdlib=libc++ (requires OS X 10.7 or later). Ich laufe auf OSX 10.8, und ich habe die XCode Command Line Tools installiert. Dies ist die Datei, die von Knoten-gyp verwendet, um das Paket zu kompilieren:Ungültiges Implementierungsziel für -stdlib = libC++ unter OSX 10.8

{ 
    "targets": [ 
    { 
     "target_name": "package_name", 

     'type': 'executable', 

     'xcode_settings': { 
     'OTHER_CFLAGS': [ 
      "-std=c++11", 
      "-stdlib=libc++" 
     ], 
     }, 

     "sources": [ "package_src.cpp" ], 
    } 
    ] 
} 

Im Grunde ist es das Ziel der Zusammenstellung angibt, die Art und den Flags, sowie die Quellen.

Irgendeine Idee, wie ich dieses Problem lösen kann?

Antwort

2

Ich weiß nicht, was für Sie gearbeitet, @drewish, aber das ist, wie ich es an die Arbeit:

{ 
    "targets": [ 
    { 
     "target_name": "package_name", 

     'type': 'executable', 

     'xcode_settings': { 
     'OTHER_CFLAGS': [ 
      "-std=c++11", 
     "-stdlib=libc++", 
     "-mmacosx-version-min=10.7" 
     ], 
     }, 

     "sources": [ "overcpu.cpp" ], 
    } 
    ] 
} 
+0

Die Angabe von "-mmacosx-version-min = 10.7" endet mit der Angabe "-mmacosx-version-min = 10.5", die node-gyp standardmäßig einfügt. Meine Erinnerung ist, dass die 10.5 am Ende endet und die erste außer Kraft setzt. – drewish

+2

Kann ich den Speicherort dieser Datei wissen? – NarendraSoni

8

Während du OS X 10.8 hast, wird clang versuchen, es so zu bauen, dass es auch auf anderen älteren OS X-Versionen ausgeführt werden kann. Da nun -stdlib=libc++ eine Mindestversion von 10,7 erfordert wird es kompilieren Sie es nicht, wenn Sie es ausdrücklich sagen, dass Sie 10.7 (oder höher) als Bereitstellungsziel durch die Angabe verwenden werden

'MACOSX_DEPLOYMENT_TARGET': '10.7' 

innerhalb des xcode_settings.

In Ihrem Fall die kompletten Einstellungen sollten wie folgt aussehen:

{ 
    "targets": [ 
    { 
     "target_name": "package_name", 

     'type': 'executable', 

     'xcode_settings': { 
     'MACOSX_DEPLOYMENT_TARGET': '10.7', 

     'OTHER_CFLAGS': [ 
      "-std=c++11", 
      "-stdlib=libc++" 
     ], 
     }, 

     "sources": [ "package_src.cpp" ], 
    } 
    ] 
} 
+0

Ah ja, das funktioniert gut. Ich habe versucht, '' -mmacosx-version-min = 10.7'' zu übergeben und es wurde verkettet, anstatt die vorhandene 10.5-Markierung zu ersetzen. – drewish