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 :
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 
	./$@
CXX est le compilateur C++, CXXFLAGS est vide et LIBS appelle les bilbliothèques nécessaires à la compilation.

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.
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
Au besoin, je vous laisse le Makefile complet si vous voulez en savoir plus.
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.