Executando verificação de segurança...
Respondendo a [Não disponível] dentro da publicação [DIVULGAÇÃO] Template para projetos C++ com gerenciador de pacotes vcpkg
1

O Makefile é muito bom para organizar o projeto, mas ele é chato no sentido da sintaxe dele, para indentar, você tem que usar tab para isso, caso não ele não identifica o comando corretamente.

E ele me ajuda a evitar ter que escrever toda vez no terminal os comandos.

spellchecker: sllist.o hashtable.o main.o spellchecker.o
	gcc sllist.o main.o hashtable.o spellchecker.o -o spellchecker 

sllist.o: sllist.c
	gcc  -g3 -c -Wall -Werror -std=c99 -O0 sllist.c

main.o: main.c
	gcc  -g3 -c -Wall -Werror -std=c99 -O0 main.c

hashtable.o: hashtable.c
	gcc  -g3 -c -Wall -Werror -std=c99 -O0 hashtable.c

spellchecker.o: spellchecker.c
	gcc  -g3 -c -Wall -Werror -std=c99 -O0 spellchecker.c

.PHONY: clean

clean: 
	rm *.o spellchecker test

De vez compilar manualmente os arquivos, eu criei um Makefile que por exemplo

Quando eu chamar o make spellchecker ele vai compilar todas as dependencias para mim e de spellchecker antes de eu compilar o spellchecker.

Isso agiliza muito o trabalho.

EXECUTABLE = swpathtracer

IMAGE = output_image

CXX = g++

CXXFLAGS = -std=c++11 -Wall -Wextra -Wpedantic -fopenmp -DDEBUG -O0 -g3

# ifeq ($(DEBUG), 1)
# CXXFLAGS += -DDEBUG -O0 -g3
# else
# CXXFLAGS += -DNDEBUG -O3 -g0
# endif

CPPFLAGS += -MMD \
			-I../../../../work/common/glm-0.9.7.0 \
			-I/usr/local/include

LDFLAGS = -L/usr/lib/gcc/x86_64-linux-gnu/4.8 \
		  -L/usr/lib/x86_64-linux-gnu \
		  -L/usr/lib \
	      -L/usr/local/lib

LDLIBS = -lassimp -fopenmp

SOURCES = $(wildcard *.cpp)

OBJECTS = $(SOURCES:.cpp=.o)

all: $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
	$(CXX) $^ -o $@ $(LDLIBS)

.cpp.o:

-include $(OBJECTS:.o=.d)

.PHONY: clean distclean run png clpng

clean:
	rm *.o *.d

distclean: clean
	rm $(EXECUTABLE)

run: swpathtracer
	./swpathtracer

png:
	convert $(IMAGE).ppm $(IMAGE).png

clpng: $(IMAGE).png
	rm $(IMAGE).png

Esse outro Makefile aqui, eu utilizo o g++ também, mas como você pode ver eu coloquei ele em uma variável chamada CXX, onde tiver CXX ele substitui, com isso posso trocar de compilador C++ facilmente e funciona para projetos C também.

Carregando publicação patrocinada...