Sublime Text Build System, которая просто "делает",

Я пытаюсь создать свой проект, просто выполнив make в верхнем каталоге. Однако, когда я это делаю, я получаю следующую ошибку:

[Errno 2] No such file or directory
[cmd:  [u'make']]
[dir:  /Users/jonathanong/Workspace/template]
[path: /usr/local/bin]
[Finished]

Это после настройки конфигурации сборки на make.

Я на Sublime Text 2.0.1, OS X 10.8.2. My Makefile состоит из исполняемых в глобальном масштабе двоичных файлов node.js. Что мне нужно сделать?

Ответ 1

Это потому, что make не находится в вашем PATH. Если вы можете построить терминал, используйте which make, чтобы выяснить путь к make, а затем добавьте его в путь для сборки. Вы можете отредактировать систему сборки makefile, чтобы добавить свой путь.

Ваше новое правило makefile должно выглядеть так:

{
   "cmd": ["make"],
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${project_path:${folder:${file_path}}}",
   "selector": "source.makefile",
   "path": "/usr/local/bin:/Applications/Xcode.app/Contents/Developer/usr/bin",
   "variants":
    [
      {
        "name": "Clean",
        "cmd": ["make", "clean"]
      },
      {
        "name": "Test",
        "cmd": ["make", "test"]
      }
    ]
}

В основном это целевой объект make по умолчанию, но я добавил в PATH и (конечно) тестовую цель. Возможно, вам придется расширить PATH, чтобы найти gcc, ifort или все, что вы используете для компиляции. Используйте : для разделения каталогов на Linux и Mac и ; в Windows. Вы также можете изменить другие переменные среды, мне пришлось установить DYLD_LIBRARY_PATH и CPATH, чтобы мои библиотеки и включенные каталоги были доступны.

Он должен быть сохранен как Make (OSX).sublime-build в каталоге пользователя ваших предпочтений Sublime. (OSX) гарантирует, что этот файл используется только на Mac, поэтому, когда вы копируете свои настройки на не-mac-компьютер, вы не будете развязывать путь.

Ответ 2

Самым предпочтительным решением является IMO для настройки PATH в плагине, поэтому вы должны установить его только один раз для всех систем сборки и всех плагинов, вызывающих внешние команды.

Вы можете просто сделать

import os
os.environ['PATH'] += os.pathsep + '/my/extra/path'

Пример реального мира живет в https://github.com/schlamar/ST3User/blob/master/preferences.py