2012-09-05 21 views
10

मैं कुछ समय के लिए SublimeText2 के साथ खेलने की कोशिश कर रहा हूं। हालांकि इसमें पाइथन के साथ लगभग बॉक्स के बाहर काम करना बहुत आसान है, सी ++ के साथ काम करना थोड़ा और मुश्किल है। मैं मौजूदा मेकफ़ाइल स्क्रिप्ट की प्रतिलिपि बनाने और संशोधित करके एक सीएमके बिल्ड स्क्रिप्ट स्थापित करने का प्रबंधन कर सकता हूं, लेकिन ऐसी कई चीजें हैं जो सीएमके समर्थित आईडीई जैसे ग्रहण सीडीटी में काम नहीं करती हैं। SublimeText 2 एक अलग बिल्ड निर्देशिका की अवधारणा को समझ में नहीं आता है, यह मुझे SublimeClang के माध्यम से स्वतः पूर्ण नहीं कर सकता है, अगर मैं सीएमके में जोड़े गए निर्देशिकाओं के संदर्भ में पुस्तकालयों को शामिल करता हूं। SublimeClang शिकायत करता रहता है कि यह पुस्तकालयों को नहीं ढूंढ सकता है, और जब मैं #include पर आज़माता हूं, तो यह मुझे मानक एसटीएल हेडर फ़ाइल नामों, जैसे कि एल्गोरिदम पर स्वत: पूर्ण भी प्रदान नहीं कर सकता है। अगर किसी के पास पाइपलाइन लगती है, तो मुझे इसके बारे में सुनने के लिए बाध्य किया जाएगा।सीएमके/सी ++ परियोजनाओं के लिए SublimeClang के साथ SublimeText का कुशलतापूर्वक उपयोग

मैंने इस प्रश्न को पहले सामान्य उद्देश्य उपयोग-संबंधित मंचों में पहले से पूछा है, जहां मुझे कोई प्रतिक्रिया नहीं मिली, इसलिए मैंने इसे यहां पोस्ट करने का विचार किया।

+0

आप त्रुटियों आप हो रही है के बारे में अधिक विशिष्ट हो सकता है:

यहाँ है कि स्क्रिप्ट, scripts/ के अंतर्गत स्थित है? उन पुस्तकालयों के बारे में क्या कह रहा है SublimeClang वास्तव में क्या है? मुझे समझ में नहीं आता कि "लाइब्रेरी शामिल करें" से आपका क्या मतलब है। सी ++ स्रोत कोड में लाइब्रेरी समेत ऐसी कोई चीज़ नहीं है, केवल हेडर समेत। – Syncopated

उत्तर

10

मैं सीमेक और सब्लिमेक्लंग के साथ सब्लिमे टेक्स्ट 2 का उपयोग करता हूं। मैं SublimeGDB का भी उपयोग करता हूं। मेरी बिल्ड निर्देशिका [project root]/build के तहत है। अपने प्रोजेक्ट फ़ाइल पर एक नज़र डालें और देखें कि क्या आप में मदद करता है:

{ 
    "folders": 
    [ 
     { 
      "path": "." 
     } 
    ], 

    "build_systems": 
    [ 
     { 
      "name": "Build", 
      "cmd": [ "make", "-C", "build" ], 
      "file_regex": "/([^/:]+):(\\d+):(\\d+): " 
     } 
    ], 

    "settings": 
    { 
     "sublimegdb_commandline": "gdb --interpreter=mi myapp", 
     "sublimegdb_workingdir": "build", 

     "sublimeclang_options" : 
     [ 
      "-Wno-reorder" 
     ], 
     "sublimeclang_options_script": "${project_path:scripts/compileflags.rb} ${project_path:build}" 
    } 
} 

compileflags.rb स्क्रिप्ट CMake में flags.make फ़ाइलों के लिए खोज करने के लिए पेड़ जो वह जगह है जहाँ CMake अपने संकलन झंडे रहता निर्माण किया जाता है। इन झंडे की आवश्यकता है ताकि SublimeClang जानता है कि आपके शामिल कहां मिलें।

#!/usr/bin/env ruby 

# Searches for a flags.make in a CMake build tree and prints the compile flags. 

def search_dir(dir, &block) 
    Dir.foreach(dir) do |filename| 
     next if (filename == ".") || (filename == "..") 
     path ="#{dir}/#{filename}" 
     if File.directory?(path) 
      search_dir(path, &block) 
     else 
      search_file(path, &block) 
     end 
    end 
end 

def search_file(filename) 
    return if File.basename(filename) != "flags.make" 

    File.open(filename) do |io| 
     io.read.scan(/[a-zA-Z]+_(?:FLAGS|DEFINES)\s*=\s*(.*)$/) do |match| 
      yield(match.first.split(/\s+/)) 
     end 
    end 
end 

root = ARGV.empty? ? Dir.pwd : ARGV[0] 
params = to_enum(:search_dir, root).reduce { |a, b| a | b } 
puts params 
+0

यदि आपने इसे पैकेज में बनाया है, तो मेरे जैसे कई लोग हमेशा आभारी होंगे। मैं –