2016-03-18 3 views
1

J'ai une base source en C en utilisant autoconf/automake, qui devrait maintenant être compilé en utilisant un compilateur C++. J'ai donc renommé tous les fichiers de .c en .cpp et modifié tous les fichiers makefiles en conséquence. Cependant, je reçois l'erreur suivante (par exemple):Passage en C++: pas de règle pour rendre le fichier file.c nécessaire par fichier.o

make[3]: *** No rule to make target 'tmsConfigFiles.c', needed by 'tmsConfigFiles.o'. Stop. 

Le Makefile se compose essentiellement de

bin_PROGRAMS = configparser 

configparser_SOURCES = tmsConfigFiles.cpp tmsMoreFiles.cpp tmsEvenMoreFiles.cpp 

AM_CXXFLAGS = -I .. -DSOME_DEFINE -Wall -Wextra -etc 

Cela fonctionne pour les parties écrasantes du code source (dont certains étaient cpp du début) mais pour certains fichiers le message d'erreur ci-dessus apparaît. J'ai essayé de nettoyer et autoreconf -is etc. en vain.

La même révision fonctionne sur Centos 6, échoue parfois sur Centos 7, échoue toujours sur ma boîte Arch.

Quelqu'un a eu un bug similaire dans autotools ou sait une solution de contournement?

+0

Solution: git clean -fx n'a pas supprimé les répertoires .deps. Les enlever a résolu le problème. – Panke

Répondre

0

Solution: git clean -fx n'a pas supprimé les répertoires .deps. Les enlever a résolu le problème.

1

La chose évidente que je peux penser est que vous ne l'avez pas réexécutée automake (ou plus correctement autoreconf) après avoir changé Makefile.am, et pour une raison quelconque (il y a plus de quelques façons pour que cela se produise) vous n Le mode maintaner n'est pas activé.

Ceci, cependant, en supposant que vous êtes en train d'éditer Makefile.am pour commencer. Si vous avez effectivement édité Makefile, alors c'est le problème inverse, automake fait la bonne chose et ignore complètement vos changements en re-générant le fichier qui ne devrait pas être édité.