Added automatic dependency system to Makefile.

This commit is contained in:
Jérôme 2019-03-30 10:02:18 +01:00
parent 38b9a872f1
commit 8803ac9921
4 changed files with 24 additions and 14 deletions

View file

@ -1,10 +1,11 @@
# Declaration of variables # Declaration of variables
C = clang C = clang
C_FLAGS = -Wall COMMON_FLAGS = -Wall -MMD
C_FLAGS = $(COMMON_FLAGS)
CC = clang++ CC = clang++
CC_FLAGS = -Wall -std=c++17 CC_FLAGS = $(COMMON_FLAGS) -std=c++17
LD_FLAGS = LD_FLAGS =
INCLUDES = INCLUDES =
# File names # File names
EXEC = run EXEC = run
@ -12,22 +13,25 @@ CSOURCES = $(wildcard *.c)
COBJECTS = $(CSOURCES:.c=.o) COBJECTS = $(CSOURCES:.c=.o)
SOURCES = $(wildcard *.cpp) SOURCES = $(wildcard *.cpp)
OBJECTS = $(SOURCES:.cpp=.o) OBJECTS = $(SOURCES:.cpp=.o)
# Main target # Main target
$(EXEC): $(COBJECTS) $(OBJECTS) $(EXEC): $(COBJECTS) $(OBJECTS)
$(CC) $(LD_FLAGS) $(COBJECTS) $(OBJECTS) -o $(EXEC) $(CC) $(COBJECTS) $(OBJECTS) -o $(EXEC) $(LD_FLAGS)
# To obtain object files # To obtain object files
%.o: %.cpp %.o: %.cpp
$(CC) $(INCLUDES) $(CC_FLAGS) -o $@ -c $< $(CC) $(INCLUDES) $(CC_FLAGS) -o $@ -c $<
# To obtain object files # To obtain object files
%.o: %.c %.o: %.c
$(C) $(INCLUDES) $(C_FLAGS) -o $@ -c $< $(C) $(INCLUDES) $(C_FLAGS) -o $@ -c $<
-include $(SOURCES:%.cpp=%.d)
-include $(CSOURCES:%.c=%.d)
# To remove generated files # To remove generated files
clean: clean:
rm -f $(COBJECTS) $(OBJECTS) rm -f $(COBJECTS) $(OBJECTS) $(SOURCES:%.cpp=%.d) $(CSOURCES:%.c=%.d)
cleaner: cleaner: clean
rm -f $(EXEC) $(COBJECTS) $(OBJECTS) rm -f $(EXEC)

View file

@ -8,8 +8,7 @@ using std::endl;
int main() int main()
{ {
return 0; return 0;
} }

1
test_c_lib.c Normal file
View file

@ -0,0 +1 @@
#include "test_c_lib.h"

6
test_c_lib.h Normal file
View file

@ -0,0 +1,6 @@
#ifndef DEF_test_c_lib
#define DEF_test_c_lib
#endif