Bonjour tout le monde !
Je suis actuellement sur un petit Makefile générique (pour ne pas à avoir à le modifier à chaque projet) ... Certains me diront que c'est pas bien et ils auront surement raison mais bon la question n'est pas là
Ci dessous l’arborescence des fichiers d'un "simple" HelloWorld :
├── build
│ ├── bin
│ │ └── hello
│ └── obj
│ ├── hello.o
│ └── main.o
├── inc
│ ├── hello
│ │ └── hello.h
│ └── version.h
├── Makefile
└── src
├── hello.c
└── main.c
Jusqu'ici tout fonctionne ! Et puis une idée un peu étrange est arrivée ... Passer à cette arborescence :
├── build
│ ├── bin
│ └── obj
│ ├── hello.o
│ └── main.o
├── inc
│ ├── hello
│ │ └── hello.h
│ └── version.h
├── Makefile
└── src
├── hello
│ └── hello.c
└── main.c
Et plus rien ne va car le compilo ne trouve plus le hello.c
Voici un bribes du Makefile en question :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| # Directories
PROJ_DIR = ./
SRCDIR = src
INCDIR = inc
BUILDDIR = build
DEBUG_BUILDDIR := build-debug
OBJDIR = $(OUTPUT_DIR)/obj
BINDIR = $(OUTPUT_DIR)/bin
SOURCES := $(shell find $(SRCDIR) -name '*.c')
INCLUDES := $(shell find $(INCDIR) -name '*.h')
OBJECTS := $(SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
# Main instruction
main-build: $(OBJECTS)
@$(LINKER) $(TARGET)-$(SOFT_VERSION) $(LFLAGS) $(OBJECTS)
@echo "\n*** Linking complete! ***"
# Create object files
$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.c
@$(CC) $(CFLAGS) -c $< -o $@ $(LDFLAGS)
@echo "Compiled "$<" successfully!" |
Tout se passe bien pour le headers mais pas pour les fichiers sources et aucune idée du pourquoi du comment, un idée ? une piste ?
Étant débutant dans le domaine toute remarque est la bienvenue
Merci,
Trigger00
Partager