Bonjour,
Je débute sur l'utilisation de la bibliothèqe boost test, qui est une bibliothèque de test unitaire. J'ai adopté la convention suivante : les fichiers de tests se termine par _test.
Pour générer les exécutable de test, j'ai utilisé la règle suivante :
CXX est le compilateur C++, CXXFLAGS est vide et LIBS appelle les bilbliothèques nécessaires à la compilation.
Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 %_test: %_test.o $(CXX_BIN) $(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS) -lboost_test_exec_monitor ./$@
Le problème rencontré, c'est que lorsque cette règle est appelée, le test est exécuté, mais il s'ensuit une commande rm. Pour mieux comprendre l'enchainement je vous ajoute la sortie du Makefile.
Au besoin, je vous laisse le Makefile complet si vous voulez en savoir plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 g++ -c fileutils.cxx g++ -c fileutils_test.cxx g++ -o fileutils_test fileutils_test.o fileutils.o -lopencv_core -lopencv_highgui -lboost_test_exec_monitor ./fileutils_test Running 1 test case... *** No errors detected rm fileutils_test.o
Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 # On compile avec g++ en chargeant les # bibliothèques d'opencv et on défini les # fichiers à compiler. CXX = g++ CXXFLAGS += LIBS = -lopencv_core -lopencv_highgui EXEC = programme CXX_PREFIX= \ fileutils CXX_BIN = $(addsuffix .o, $(CXX_PREFIX)) # Règles pour les exécutables all: $(EXEC) run: all ./$(EXEC) $(EXEC): $(CXX_BIN) main.o $(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS) # Règles pour les tests test: fileutils_test %_test: %_test.o $(CXX_BIN) $(CXX) $(CXXFLAGS) -o $@ $^ $(LIBS) -lboost_test_exec_monitor ./$@ # Règle pour passer compiler un fichier C++ .cxx.o: $(CXX) $(CXXFLAGS) -c $< # No comment clean: rm -f *.o .PHONY: all run clean test .SUFFIXES: .cxx .o
Quelqu'un a-t-il une idée de la provenance de la commande rm ? Par ailleurs, j'accepte avec plaisir toutes vos remarques concernant le Makefile, étant encore débutant dans le domaine.
Merci d'avance.
Partager