Skip to content

Instantly share code, notes, and snippets.

@Skalnark
Created November 14, 2019 17:17
Show Gist options
  • Save Skalnark/1c8d7fc1578827fb4a1b9cff777da16a to your computer and use it in GitHub Desktop.
Save Skalnark/1c8d7fc1578827fb4a1b9cff777da16a to your computer and use it in GitHub Desktop.
#### define o compilador
CPPC = g++
#############################
#### opcoes de compilacao e includes
CCOPT = -O3 -fPIC -fexceptions -DNDEBUG -DIL_STD -std=c++11
CONCERTINCDIR = $(CONCERTDIR)/include
CPLEXINCDIR = $(CPLEXDIR)/include
#############################
#### diretorios com os source files e com os objs files
SRCDIR = src
OBJDIR = obj
#############################
#### lista de todos os srcs e todos os objs
SRCS = $(wildcard $(SRCDIR)/*.cpp)
OBJS = $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(SRCS))
#############################
#### regra principal, gera o executavel
Name: $(OBJS)
@echo "\033[31m \nLinking all objects files: \033[0m"
$(CPPC) $(OBJS) -o $@
############################
#inclui os arquivos de dependencias
-include $(OBJS:.o=.d)
#regra para cada arquivo objeto: compila e gera o arquivo de dependencias do arquivo objeto
#cada arquivo objeto depende do .c e dos headers (informacao dos header esta no arquivo de dependencias gerado pelo compiler)
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
@echo "\033[31m \nCompiling $<: \033[0m"
$(CPPC) $(CCFLAGS) -c $< -o $@
@echo "\033[32m \ncreating $< dependency file: \033[0m"
$(CPPC) -std=c++11 -MM $< > $(basename $@).d
@mv -f $(basename $@).d $(basename $@).d.tmp #proximas tres linhas colocam o diretorio no arquivo de dependencias (g++ nao coloca, surprisingly!)
@sed -e 's|.*:|$(basename $@).o:|' < $(basename $@).d.tmp > $(basename $@).d
@rm -f $(basename $@).d.tmp
#apagar objetos e arquivos de dependencia
clean:
@echo "\033[31mcleaning obj directory \033[0m"
@rm Name -f $(OBJDIR)/*.o $(OBJDIR)/*.d
rebuild: clean Name
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment