2011-07-25 6 views
4

Je travaille sur un projet C++ avec Eclipse Indigo + CDT sur LinuxEclipse CDT: la reconstruction d'un projet dépendant

Il est fait d'un projet pour une bibliothèque et un projet avec des tests unitaires pour cette bibliothèque.
Évidemment, le deuxième projet dépend du premier. Mais les deux projets utilisent le constructeur externe

Mais lorsque je modifie un en-tête du premier projet, il ne reconstruit pas le projet de test. Et je ne peux pas le faire faire ... Il va simplement relier le second projet, même si l'en-tête est inclus dans le projet de test. C'est très ennuyeux parce que j'ai souvent des builds de travail en travaillant sur la librairie, puis à un moment je fais une reconstruction complète et je vois une charge d'erreurs, sur des choses que j'ai faites il y a 30 minutes!

exemple de sortie de la CDT mondiale Console Construire:

**** Build of configuration Debug for project libxxx **** 

make -j all 
Building file: ../foo.cpp 
Invoking: GCC C++ Compiler 
ccache g++ -I"/home/foke/workspaces/cpp/libxxx/include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"foo.d" -MT"foo.d" -o "foo.o" "../foo.cpp" 
Finished building: ../foo.cpp 

Building target: libxxx.a 
Invoking: GCC Archiver 
ar -r "libxxx.a" ./foo.o ./src/yyy.o ./src/detail/zzz.o 
ar: creating libxxx.a 
Finished building target: libxxx.a 


**** Build Finished **** 

**** Build of configuration Debug for project libxxx_tests **** 

make -k -j all 
Building target: libxxx_tests 
Invoking: Cross G++ Linker 
g++ -L"/home/foke/workspaces/cpp/libxxx/Debug" -o "libxxx_tests" ./main.o ./aaa.o ./tests/bbb.o ./tests/ccc.o ./tests/ddd.o -lboost_unit_test_framework -lxxx 
Finished building target: libxxx_tests 


**** Build Finished **** 

Répondre

4

Si vous utilisez les dernières versions de MS Visual Studio, vous devez déguerpir un espace sur votre bureau et marquer avec un géant " X '- c'est inévitablement là où ton poing et peut-être même ta tête vont cogner de frustration en utilisant eclipse/CDT. Eclipse a son propre mécanisme de dépendance qui ne fait presque rien, mais heureusement le module CDT a son propre mécanisme de dépendance qui essaie de faire ce que vous voulez. Pour configurer les dépendances du projet vont:

Project-->Properties-->C/C++ General-->Paths and Symbols-->References 

Donc, dans votre exemple, vous allez dans les propriétés du projet pour « libxxx_tests » et sélectionnez « libXXX.a » comme une dépendance.

Notez que vous pouvez également utiliser cette page pour définir l'ordre de la bibliothèque, ce qui peut être une étape importante en fonction de la complexité de votre projet.

+1

Bonjour, cela ne fonctionne pas. Je suis frustré par ce problème depuis longtemps. Je l'ai demandé ici: http://stackoverflow.com/questions/9884827/eclipse-cdt-not-building-project-on-header-file-change et posté ce bug d'éclipse ici: https://bugs.eclipse.org /bugs/show_bug.cgi?id=375800 – haelix

+0

fonctionne sur Code Composer Studio 5.5.0, qui pour autant que je peux dire est basé sur Eclipse 3.8.1 et CDT 8.1.1 –