2015-05-07 5 views
12

In binding.gyp möchte ich wie folgt festgelegt:Mit Knoten gyp Vordefinierte Variable PRODUCT_DIR

"libraries": [ "-Wl,-rpath,<working directory>/build/Release/" ]

ich die folgende Konfiguration verwende das gleiche zu tun:

"libraries": [ "-Wl,-rpath,<!(pwd)/build/Release/" ]

Dies funktioniert aber das Problem dabei ist, dass es nicht unter Windows oder wo auch immer pwd nicht verfügbar ist und auch dies ist nicht die beste Option, da es bereits eine vordefinierte var iable PRODUCT_DIR verfügbar in node-gyp, um dies zu erreichen. Seltsamerweise kann ich diese Variable PRODUCT_DIR nicht verwenden.

Ich versuchte folgende Optionen, aber kein Glück. Fehler sagt Library not loaded: @rpath/<lib>.dylib (rpath nicht gesetzt zu werden):

  • "libraries": [ "-Wl,-rpath,>(PRODUCT_DIR)/build/Release/" ]
  • "libraries": [ "-Wl,-rpath,<(PRODUCT_DIR)/build/Release/" ]
  • "libraries": [ "-Wl,-rpath,>(PRODUCT_DIR)"]
  • "libraries": [ "-Wl,-rpath,<(PRODUCT_DIR)"]

Wenn ich Druck von "<!(echo <(PRODUCT_DIR) 1>&2)" versucht, es sagt builddir: command not found. Sieht so aus als hätte die Variable den Wert builddir. Soll nicht das Zielverzeichnis anstelle von Builddir gedruckt werden? oder builddir bedeutet etwas für Compiler?

Benutzt ich diese Variable nicht richtig oder gibt es eine andere Variable, die ich benutzen sollte?

+0

Haben Sie versucht, $ (PRODUCT_DIR) '? Mögliches Duplikat von http://stackoverflow.com/questions/17023442/referring-to-environment-variables-from-binding-gyp-node-gyp –

+0

Versucht aber kein Glück :(Wenn ich eine benutzerdefinierte Variable definieren kann ich zu benutzen '<(user_defined_variable_dir)' aber die vordefinierte Variable 'PRODUCT_DIR' funktioniert nicht –

+0

Glücklicherweise funktioniert mein' Addon' auch ohne 'rpath' zu setzen :) Also für jetzt habe ich eine Bedingung und Einstellung' rpath' hinzugefügt durch Ausführen von 'pwd' wobei' "OS! = 'win'" '. https://github.com/royalpinto/node-cares/blob/master/binding.gyp –

Antwort

1

PRODUCT_DIR verhält sich wirklich komisch, muss ich sagen. Ich vermeide es, wo immer es möglich ist. Oft mit externen Build-Skripten mit einfachem Knoten.

Der Grund, warum Sie nicht "<!(echo <(PRODUCT_DIR) 1>&2)" ist, ist, dass eine Art spezielle Variable zu Node-Gyp ist.

auch immer Sie das richtige Format verwenden, wie here ...

{ 
    'files': [ '<(PRODUCT_DIR)/libzip.dll' ], 
    'destination': '<(module_path)' 
} 

obwohl Meine Vermutung ist, dass Sie brauchen ...

"variables": { 
    "YOUR_DIR: "<(PRODUCT_DIR)/build/Release/"", 
    "your_libs": "-Wl,-rpath,<(CURRENT_DIR) ]" 
} 

Sie wissen, ist es Python, wir don Weiß nicht :)

Verwandte Themen