Ajouter un chemin à faire
Dans mon makefile, j'ai une variable objet. J'ai besoin de préfixer obj/pour tous .o fichier. Comment puis-je faire?
CC=g++
CFLAGS=-C -Wall
LDFLAGS=-lsqlite3 -lpthread -ldl
SOURCES=main.cpp Database.cpp actionInit.cpp TileSet.cpp Player.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=mahjong-counter
all: bin $(OBJECTS) $(EXECUTABLE)
bin:
mkdir -p bin
%.o: %.cpp
$(CC) $(LDFLAGS) $< -c -o $@
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $(EXECUTABLE)
clean:
rm $(OBJECTS)
Votre makefile a un couple de questions. À part en utilisant
$(CC)
au lieu de $(CXX)
, vous pouvez éviter de créer des répertoires dans une autre cible, car il est parallèle à l'accumulation dangereuse.OriginalL'auteur Will03uk | 2011-03-02
Vous devez vous connecter pour publier un commentaire.
Vous voulez CXX, pas de CC. CC, c'est pour le compilateur C, pas du C++ compilateur
En tout cas, je crois que la suivante devrait fonctionner:
mainobj/%.o', needed by
tous". Stop. Il semble prendre l' /%.o littéralement.Avez-vous d'ajouter la barre oblique après $(OBJ_DIR)? Il semble caché
CC
est pour le compilateur C, qu'il soit ou nongcc
n'est pas pertinent.Désolé, ouais c'est ce que je voulais dire. Édité. +1@Jack
OriginalL'auteur Sagar
Vous pouvez utiliser plus expressif version de substitution que vous avez utilisé lors de l'attribution
OBJECTS
ou utiliser le texte standard de la fonction de transformation
$(addprefix)
est une extension GNU.Quelqu'un utilise encore une non-GNU make?
Les gens sur la non-systèmes GNU (BSD, Solaris, IRIX, AIX, ...)?
OriginalL'auteur P Shved