2012-12-20 16 views
10

निर्दिष्ट करने के लिए कैसे मैं एक देशी नोड मॉड्यूल लिख रहा हूं और मैं इसे रिलीज़ और डीबग संस्करणों में बनाने में सक्षम होना चाहता हूं।gyp - लिंक लाइब्रेरी स्वाद

नोड मॉड्यूल किसी अन्य लाइब्रेरी से लिंक करता है, जिसमें दो अलग-अलग निर्देशिकाओं में डीबग और रिलीज़ संस्करण होता है।

अब यह वह जगह है जहां मैं अटक गया हूं - वर्तमान कॉन्फ़िगरेशन के निर्माण के लिए मैं लाइब्रेरी निर्देशिका कैसे निर्दिष्ट करूं?

मैं स्थापित करने कि configurations.debug.link_settings कुंजी में है, लेकिन मैं त्रुटि मिलती है की कोशिश की है: 'link_settings, डीबग विन्यास में अनुमति नहीं binding.gyp

उत्तर

14

लक्ष्य में पाया जाहिर है इस में संभव नहीं है एक क्रॉस-प्लेटफ़ॉर्म तरीका। तो उम्मीद है कि यह आपको कुछ घंटों के प्रयोग को छोड़ देगा।

यह एक जीईपी फ़ाइल है जो मैक और विंडोज के लिए एडन बनाता है।

//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

मैं एक जीसीसी संस्करण :( – OrangeDog

+0

सही सेटिंग्स के नाम [MSVSSettings.py] का उपयोग करें खोजने के लिए अतिरिक्त (https://code.google.com/p/gyp/source/browse/trunk/pylib/ की जरूरत ढकोसला/MSVSSettings.py? r = 904 # 431) – Karl2011

संबंधित मुद्दे