Sublime Text 3 с системой сборки Make не запускает программу

Я пытаюсь создать проект C++ в Sublime Text 3 в Linux. Обычно я просто переключаюсь на терминал и запускаю make run, и он запускается. Однако я пытаюсь упростить процесс, работая непосредственно в Sublime. Однако нажатие Ctrl+Shift+B вызывает только две опции: Make и Make clean. Оба из них будут выполнять команду в соответствии с моим Makefile для проекта. Однако запуска Make run нет, поэтому я не могу напрямую запустить проект, нажав Ctrl+B. Я надеюсь, что кто-то может дать некоторое представление об этом!

Вот мой Makefile:

BINARY := build/project
SRCS := $(shell find . -iname "*.cpp")
OBJS := $(addprefix build/,$(SRCS:.cpp=.o))

NEEDED_LIBS := 

CXX := g++ -flto
LD := $(CXX) $(addprefix libs/,$(NEEDED_LIBS))
override CXXFLAGS += -std=c++11
override LDFLAGS += $(CXXFLAGS)

all:$(BINARY)

$(BINARY):$(OBJS) $(addprefix libs/,$(NEEDED_LIBS))
    $(LD) $(LDFLAGS) -o $@ $^

build/%.o:%.cpp
    $(CXX) -O2 -c $(CXXFLAGS) $< -o $@

run:$(BINARY)
    @$(BINARY)
    
clean:
    rm -rf build/*

person Marina Terry    schedule 11.11.2020    source источник


Ответы (1)


Сборка по умолчанию для этого — Makefile/Make.sublime-build, которая выглядит так:

{
    "shell_cmd": "make",
    "file_regex": "^(..[^:\n]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${folder:${project_path:${file_path}}}",
    "selector": "source.makefile",
    "syntax": "Packages/Makefile/Make Output.sublime-syntax",
    "keyfiles": ["Makefile", "makefile"],

    "variants":
    [
        {
            "name": "Clean",
            "shell_cmd": "make clean"
        }
    ]
}

То есть по умолчанию он просто запускает Make, но у него также есть вариант с именем Clean, который также будет запускать make clean. В частности, это указывает на то, что список команд является статическим и не зависит от фактического содержимого рассматриваемого файла Makefile.

Что вы можете сделать, так это выбрать Tools > Build System > New Build System из меню, что создаст новую вкладку и предоставит систему сборки по умолчанию. Выберите весь этот контент, а затем замените его копией вышеперечисленного, чтобы у вас была копия базовой системы сборки. Затем вы можете добавить дополнительные варианты по мере необходимости. Например:

    "variants":
    [
        {
            "name": "Clean",
            "shell_cmd": "make clean"
        },
        {
            "name": "Run",
            "shell_cmd": "make run"
        }
    ]

Когда вы закончите, сохраните файл в местоположении Sublime по умолчанию (ваш пакет User) с произвольным именем, например Custom Makefile.sublime-build или подобным (местоположение и расширение являются важными частями).

Как только вы это сделаете, вы увидите, что ваша система сборки появится в меню под Tools > Build System с именем, под которым вы сохранили файл. Вы можете либо выбрать сборку, чтобы использовать ее, либо оставить ее автоматической.

Когда вы нажмете ctrl+shift+b, опции из этой системы сборки появятся в списке (если сборка настроена на автоматическую, вы также увидите опции по умолчанию).

person OdatNurd    schedule 11.11.2020