2010-09-01 5 views
1

Si j'ai une règle comme ça dans mon dossier de marque:Makefile avec des règles différentes pour .o génération

CC = g++ 
CFLAGS = -Wall 
COMPILE = $(CC) $(CFLAGS) -c 

src = A.cpp \ 
     main.cpp 

test_src = Test.cpp 
test = testAll 

OBJFILES := $(patsubst %.cpp,%.o,$(src)) 
TEST_OBJS := $(patsubst %.cpp,%.o,$(test_src)) 

%.o: %.cpp 
    $(COMPILE) -I UnitTest++/src -LUnitTest++/ -l UnitTest++ -o [email protected] $< 

Je finis y compris et lier UnitTest ++ aux fichiers de test non tels que principal et A.cpp Comment puis-je faire que faire des classes de test lien avec les bibliothèques de test?

+0

temps Question idiote: si vous créez des fichiers d'objet, le compilateur appelle en fait l'éditeur de liens (et donc utiliser les bibliothèques)? Si vous aviez affaire à des programmes, peut-être. –

Répondre

3

Spécifiez les fichiers de votre règle applique:

$(TEST_OBJS): %.o: %.cpp 
    $(COMPILE) -I UnitTest++/src -LUnitTest++/ -l UnitTest++ -o [email protected] $< 
+0

gmake spécifique? – dmckee

+0

@dmckee Je l'ai juste couru en utilisant gnu make. Travaux. Donc pas gmake spécifique. – anio

+1

@anio: gmake indique la version GNU. Ce nom est souvent utilisé pour installer GNU quand un système existe déjà (il est vrai que ce n'est pas courant ces derniers temps). Je viens de vérifier la documentation de GNU make et j'ai appris que d'autres font des règles de modèle basées sur le% support, donc je ne le fais toujours pas. – dmckee

Questions connexes