На самом деле используемый вами селектор scope
неверен;scope
файлов C ++ - source.c++
, а не source.cpp
. Вы можете использовать Tools > Developer > Show Scope Name
из меню (или соответствующей клавиши), пока вы редактируете файл, чтобы увидеть полную область в текущем местоположении курсора. Для системы сборки первая строка во всплывающей области видимости - это та, которую вы хотите использовать.
Есть еще одна проблема с вашей сборкой (о которой вы упоминали в комментариях), что сборка не работает должным образом,Причиной этого является то, что вы используете cmd
для выполнения сборки, но вы используете конструкции оболочки (&&
).
Когда вы указываете cmd
в системе сборки, выпредоставить список строк;первый элемент - это имя программы, которую вы хотите выполнить (здесь это clang++
), а остальные элементы - это аргументы, которые должны быть переданы выполняемой программе.
Так что в этом случае вы 'Вы просите Sublime выполнить clang++
напрямую, и один из аргументов, которые вы ему предоставляете, это &&
, который, как предполагается, является именем файла. Намерение состоит в том, чтобы попытаться запустить программу, если она успешно скомпилируется, но использование &&
является функцией вашей оболочки (например, bash
или подобной), а не clang
.
Вы можете попробоватьдобавив "shell": true
в вашу сборку, которая сообщает Sublime, что он должен попытаться выполнить cmd
через системную оболочку;который передает все целиком в оболочку, которая знает, как обрабатывать &&
.
Другая альтернатива - использовать shell_cmd
вместо этого;в этом случае вы предоставляете одну строку, представляющую командную строку, которую вы вводите в терминал. В этом случае при выполнении сборки Sublime автоматически передает значение в оболочку для выполнения.
В вашем случае это может выглядеть следующим образом:
"shell_cmd": "clang++ -o \"${file_base_name}.out\" \"$file\" && \"./${file_base_name}.out\"",
Помимо значения, являющегосяв одну строку, также важно отметить, что если ваши имена файлов могут содержать пробелы, вам нужно заключить все аргументы имени файла в двойные кавычки, чтобы оболочка обрабатывала все правильно.