Tout d'abord, j'essaie de m'habituer à makefiles mais je suis nouveau avec ça. Le fichier suivant est censé, d'abord, compiler tous les fichiers ./src/*.cpp
à ./src/*.o
(où le nom de fichier survit) et ensuite compléter la compilation avec simulation.cpp
et relier le tout ensemble. Maintenant, make renvoie le message d'erreur:make: -c: Commande non trouvée
make: -c: Command not found
Je n'ai aucune idée de la marche à suivre! Est-ce que la construction générique fonctionnerait même de la manière désirée? Merci beaucoup pour votre effort!
#basic stuff
TRUE = 1
FALSE = 0
SHELL := #!/bin/bash
# path names
SRCPATH = ./src/
CLEANPATH = ./res/ \
./crash/
# source files.
MAIN = simulation.cpp
OBJS = $(wildcard $(SRCPATH)*.o)
SRCS = $(wildcard $(SRCPATH)*.cpp)
INCLUDES = $(wildcard $(SRCPATH)*.h)
#GLOBAL MACROS PASSED TO PROGRAM!
MODEL_MRT = $(TRUE) #if true model used is MRT else SRT
PARALLEL = $(TRUE)
GRAVITY = $(TRUE)
# output file name
OUT = simulation
# C++ compiler flags (-g -O2 -Wall)
CXXFLAGS = -g -Wall -O -fopenmp
CXXDEFINES = -D MODEL=$(MODEL_MRT) -D PARALLEL=$(PARALLEL) -D GRAVITY=$(GRAVITY)
# compiler
CXX = g++
$(OUT) : $(OBJS)
$(CXX) $(CXXFLAGS) $(MAIN) $(OBJS) $(CXXDEFINES) -o $(OUT)
$(OBJS) : $(SRCS) $(INCLUDES)
$(CXX) $(CXXFLAGS) -c $(SRCS) -o $(OBJS)
clean : $(OUT)
rm $(OBJS)
rm $(CLEANPATH)/*.*
run : $(OUT) clean
./$(OUT)
.PHONY: clean run
Normalement, vous pouvez omettre la ligne "$ (CXX) $ (CXXFLAGS) -c $ (SRCS) -o $ (OBJS)". Ou écrivez simplement sans "-o $ (OBJS)". –