Je pose un système de construction pour mon application QT à l'aide d'un fichier QMake .Pro utilisant le modèle 'SubDirs'. Cela fonctionne bien et me permet de spécifier l'ordre que chaque cible est construite, de sorte que les dépendances fonctionnent bien. Cependant, j'ai maintenant ajouté un outil au projet qui génère un numéro de version (contenant la date de construction, la révision SVN, etc.) utilisée par l'application principale - je peux créer cette version de version d'abord mais quand elle est construite, je veux Pour l'exécuter avant que d'autres cibles soient construites (elle génère un fichier d'en-tête contenant le numéro de version indiquant que l'application principale comprend.)
Par exemple, mon fichier QMake simple ressemble à quelque chose: P>
TEMPLATE = subdirs CONFIG += ordered SUBDIRS = version \ lib \ tests \ mainapp
4 Réponses :
J'utilise actuellement qmake exec mes tests unitaires automatiquement pendant deux ans - et il fonctionne très bien Avoir
un coup d'oeil ici - je fait un mini-guide pratique pour cela. P>
Qt: Tests unitaires automatisés avec qMake p>
#include "MyUnitTest1.h" #include "MyUnitTest2.h" int main(int argc, char** argv) { QApplication app(argc, argv); int retval(0); retval +=QTest::qExec(&MyTest1(), argc, argv); retval +=QTest::qExec(&MyTest2(), argc, argv); return (retval ? 1 : 0); }
Merci. Je viens de lire votre message de blog et j'ai une autre solution pour plusieurs QTest, ce qui signifie que vous n'avez pas besoin d'éditer MAIN.CPP pour ajouter de nouveaux tests - ils sont homologués automatiquement, similaires à la manière dont le Frame de test automatique Boost fonctionne. Faites-moi savoir si vous êtes intéressé.
Ce son semble vraiment intéressant - bien sûr, je suis intéressé :) salut, chris
Changer & myTest1 () code> à
Test MyTest1; ... & Test Code>
J'ai essayé de faire beaucoup de choses avec QMake en tant que système de construction au fil des ans. Finalement, je viens de recourir à une étape de pré-QMake. C'est à dire. un script configurant. p>
Vous pouvez créer votre outil de version là-bas, puis l'exécuter avant d'appeler QMake pour générer les maquillages. p>
J'ai trouvé le moyen le plus simple d'obtenir des données dans les fichiers Pro, si vous en avez besoin également, c'est générer un fichier .pro.inc et l'inclure de votre pro. P>
comme 3DH mentionné, vous voulez un quelque chose de similaire doit fonctionner avec votre répertoire de test. P> < / p> qmake_post_link code>
option spécifiée Dans vos fichiers .pro contenant quelque chose que vous voulez exécuter. Donc, pour votre exemple, je ferais quelque chose comme ceci avec le fichier version.pro code>:
J'ai posté un message sur la liste de diffusion des intérêts QT sur une étape de «pré-construction» et peut être effectuée à l'aide d'une combinaison de Pre_TargetDeps et QMake_extra_Targets. Voici la réponse:
Vous pouvez spécifier des étapes de construction personnalisées, par exemple. cela appellerait makemieversion.sh Pour créer myversion.cpp à chaque fois Avant qu'il construit quelque chose: p>
versiontarget.target = myversion.cpp versiontarget.commands = ./makemyversion.sh versiontarget.depends = FORCE PRE_TARGETDEPS += myversion.cpp QMAKE_EXTRA_TARGETS += versiontarget
Pre Build est délicate à trouver pour QT, car ils n'ont qu'un QMake_Post_Link, qmake_pre_link et no qmake_pre_built. Merci d'avoir partagé. +2