CMake, C++ et Jenkins/intégration Continue

J'ai un cmake exemple de projet que je voudrais construire sur Jenkins en cours d'exécution sur Ubuntu 15.10. J'ai installé:

https://wiki.jenkins-ci.org/display/JENKINS/CMake+Plugin

Et créé deux étapes de génération:

  1. Lancer cmake pour générer des makefiles
  2. Exécuter faire tous les à partir de la génération dir

CMake, C++ et Jenkins/intégration Continue

Je fonctionne:

[build] $ cmake -G "Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug /var/lib/jenkins/workspace/cmake-test/cmake-gtest/src
-- Configuring done
-- Generating done
-- Build files have been written to: /var/lib/jenkins/workspace/cmake-test/cmake-gtest/build
[build] $ /usr/bin/make
[  4%] Built target libfoo
[  9%] Built target libbar
[ 14%] Built target myApp
[ 52%] Built target gmock
[ 90%] Built target gtest
[100%] Built target testfoo
[cmake-test] $ /bin/sh -xe /tmp/hudson1792271459427590561.sh
+ cd cmake-gtest/build
+ make all
[  4%] Built target libfoo
[  9%] Built target libbar
[ 14%] Built target myApp
[ 52%] Built target gmock
[ 90%] Built target gtest
[100%] Built target testfoo
Finished: SUCCESS

Mais est-ce l'approche recommandée pour l'utilisation de cmake dans un IC/Jenkins installation?

Actuellement mon cmake/Jenkins build sur chaque push; 1) générer des makefiles, 2) construire le projet.

Je suis un peu inquiet que la première étape 1) générer des makefiles mange moment de la construction et il ne semble pas vraiment optimal pour faire de cette étape sur chaque poussée. Surtout depuis que je ne prévois pas de changer CMakeLists.txt fichiers souvent, mais quand ils changent de nouveaux fichiers générés doivent bien sûr être utilisé.

Est l'approche ci-dessus commun des pratiques que je viens de vous habituer ou ai-je raté quelque chose?

La "génération de makefile" prendre le temps de s'inquiéter? Alors qu'il peut ne pas être en train de changer très souvent, ayant un ou de l'étape de gâcher la construction lorsqu'il y a des changements n'est vraiment pas une solution sympa ...
Oui c'est aussi mon problème, mieux vaut prévenir que guérir, une solution serait de faire en sorte de briser ma demande dans les plus petites parties rapides quand il grandit. Regading les deux construire les étapes ci-dessus, 1) cmake/générer, 2) faire tout il y a une certaine manière de le faire que dans le cadre de la génération de code à l'étape? Ou sont-ils complètement indépendants et doivent être traités comme tels?
Je ne suis pas tout à fait sûr de ce que vous demandez. Mon attitude en général, est "d'aller avec la solution la plus simple qui suffit à résoudre le problème actuel", et de ne pas compliquer quelque chose jusqu'à ce que vous avez réellement une bonne raison. - Je exécuter trois emplois différents sur mon Jenkins système (à la maison): "Construire + exécuter tous les tests avec clang++", "Build + exécuter tous les tests avec g++" - ces de vérifier toutes les 15 minutes pour les nouveaux commits dans le repo git, et la troisième est de télécharger la version de LLVM et mon code, et de le construire, tous ensemble, basé sur un script de compilation dans le projet - une fois la nuit.
À partir de l'écran ci-dessus, j'ai deux etapes de construction: 1: générer des makefiles, 1: exécuter la commande make. Je me demandais juste si cela peut être fait en une seule étape et si cmake a quelques postes de commande de l'étape pour faire le construire après les fichiers ont été générés.
Semble, de ce que vous devez faire à la fois de toute façon. Le seul avantage d'avoir deux parties est de savoir si elle prend assez longtemps que, à partir d'une autre génération de code avant la fin du test, ou quelque chose du genre.

OriginalL'auteur u123 | 2016-02-27