Sublime Text 3 с Make build система не изпълнява програмата

Опитвам се да създам 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