2013-12-12 62 views
2

我已經爲C++文件創建了自定義生成系統。下面是我的構建系統:在Sublime Text中自動生成不適用於C++

{ 
    "cmd": ["g++", "-Wall", "-time", "$file", "-o", "$file_base_name","&&", "start", "cmd","/c","${file_base_name}","^&","cmd","/c","pause"], 
     "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
     "working_dir": "${project_path:${folder}}", 
     "selector": "source.cpp", 
     "shell": true,  
} 

事情是,它只在我手動選擇此構建系統時才起作用。如果我指定自動構建系統,系統的C++構建系統正在工作,而不是我的。如何改變這種行爲?

回答

3

根據文檔:

例如:

{ 
    "cmd": ["python", "-u", "$file"], 
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 
    "selector": "source.python" 
} 

選擇

  • 可選。工具|時使用構建系統|自動設置爲true。 Sublime Text使用此範圍選擇器爲活動視圖查找適當的構建系統。

所以"selector": "source.cpp",是負責選擇構建系統的部分。在其他地方,我們閱讀:

  • Sublime Text實現了來自Mac的文本編輯器Texmate的範圍思想。 Textmate的在線手冊包含有關範圍選擇器的更多信息,這些信息對於Sublime Text用戶也很有用。

在TextMate的文檔:

  • 與CSS,可以使用一個元素的上下文中的範圍選擇。下圖顯示了字符串作爲工具提示的範圍(通過^⇧P)。字符串的直接父母是source.php.embedded.html,text.html.basic是祖先。

  • 在範圍選擇器中,我們將元素名稱指定爲空格分隔列表,以指示每個元素應存在於作用域中(並且順序相同)。所以如果我們想要在PHP中定位所有字符串,我們可以使用source.php字符串,或者我們可以使用text.html source.php來定位嵌入在HTML中的PHP。

Notife是範圍並不意味着擴展。在C++.sublime-project您有:

C++.sublime-settings{ 
    "extensions": ["cpp", "cc", "cxx", "c++", "h", "hpp", "hxx", "h++", "inl", "ipp"] 
} 

這就構成了在c++範圍的擴展名的文件。如果您當前打開的文件被識別爲屬於C++範圍,那麼將範圍定義更改爲"selector": "source.c++"應運行您的構建器。

+0

謝謝!我一直在試圖弄清楚如何解決這個問題,它的效果很好。 +1 – Abluescarab

相關問題