2012-12-20 11 views
10

Sto scrivendo un modulo di nodo nativo e mi piacerebbe essere in grado di costruirlo nelle versioni di debug e di rilascio.gyp - come specificare il sapore della libreria di collegamento

Il modulo del nodo si collega ad un'altra libreria, che ha una versione di debug e release in due diverse directory.

Ora è qui che sono bloccato: come specificare la directory della libreria per la configurazione corrente in fase di creazione?

Ho provato a installare che in chiave configurations.debug.link_settings, ma ottengo l'errore: 'link_settings non ammessi nella configurazione di debug, che si trova in target binding.gyp

risposta

14

A quanto pare questo non è possibile in un modo multipiattaforma. Quindi spero che questo ti risparmi un paio d'ore di sperimentazione.

Questo è un file gyp che crea l'addon per Mac e Windows.

//This example assumes you have an external library 'thelibrary', located in 
//./external/thelibrary 
//With the two flavors, debug and release in lib/debug and lib/release 
{ 
    "targets": [ 
     { 
      "target_name": "addon", 
      "sources": [ 
       "src/addon.cpp", 
       "src/expose_the_library.cpp" 
      ], 
      "include_dirs": [ 
       "external/thelibrary/include" 
      ], 
      "cflags!": [ 
       "-fno-exceptions" 
      ], 
      "cflags_cc!": [ 
       "-fno-exceptions" 
      ], 
      "conditions": [ 
       [ 
        "OS=='mac'", 
        { 
         "defines": [ 
          "__MACOSX_CORE__" 
         ], 
         "architecture": "i386", 
         "xcode_settings": { 
          "GCC_ENABLE_CPP_EXCEPTIONS": "YES" 
         }, 
         "link_settings": { 
          "libraries": [ 
           "-lthelibrary", 
           "-framework", 
           "IOBluetooth" //this is how you use a framework on OSX 
          ], 
          "configurations": { 
           "Debug": { 
            "xcode_settings": { 
             "OTHER_LDFLAGS": [ 
              "-Lexternal/thelibrary/lib/debug" 
             ] 
            } 
           }, 
           "Release": { 
            "xcode_settings": { 
             "OTHER_LDFLAGS": [ 
              "-Lexternal/thelibrary/lib/release" 
             ] 
            } 
           } 
          } 
         } 
        } 
       ], 
       [ 
        "OS=='win'", 
        { 
         "link_settings": { 
          "libraries": [ 
           "-lthelibrary.lib", 
          ] 
         }, 
         "configurations": { 
          "Debug": { 
           "msvs_settings": { 
            "VCCLCompilerTool": { 
             "ExceptionHandling": "0", 
             "AdditionalOptions": [ 
              "/MP /EHsc" 
             ] 
            }, 
            "VCLibrarianTool": { 
             "AdditionalOptions": [ 
              "/LTCG" 
             ] 
            }, 
            "VCLinkerTool": { 
             "LinkTimeCodeGeneration": 1, 
             "LinkIncremental": 1, 
             "AdditionalLibraryDirectories": [ 
              "../external/thelibrary/lib/debug" 
             ] 
            } 
           } 
          }, 
          "Release": { 
           "msvs_settings": { 
            "VCCLCompilerTool": { 
             "RuntimeLibrary": 0, 
             "Optimization": 3, 
             "FavorSizeOrSpeed": 1, 
             "InlineFunctionExpansion": 2, 
             "WholeProgramOptimization": "true", 
             "OmitFramePointers": "true", 
             "EnableFunctionLevelLinking": "true", 
             "EnableIntrinsicFunctions": "true", 
             "RuntimeTypeInfo": "false", 
             "ExceptionHandling": "0", 
             "AdditionalOptions": [ 
              "/MP /EHsc" 
             ] 
            }, 
            "VCLibrarianTool": { 
             "AdditionalOptions": [ 
              "/LTCG" 
             ] 
            }, 
            "VCLinkerTool": { 
             "LinkTimeCodeGeneration": 1, 
             "OptimizeReferences": 2, 
             "EnableCOMDATFolding": 2, 
             "LinkIncremental": 1, 
             "AdditionalLibraryDirectories": [ 
              "../external/thelibrary/lib/release" 
             ] 
            } 
           } 
          } 
         } 
        } 
       ] 
      ] 
     } 
    ] 
} 
+0

ho bisogno di una versione di gcc :( – OrangeDog

+0

aggiuntive per trovare le impostazioni corrette nomi utilizzano [MSVSSettings.py] (https://code.google.com/p/gyp/source/browse/trunk/pylib/ gyp/MSVSSettings.py? r = 904 # 431) – Karl2011

Problemi correlati