Je comprends que pour compiler et installer quelque chose à partir des sources, dans un système Unix, les trois étapes impliquées sont:

1) ./configure

2) make

3) make install

Lorsque j'ai vérifié l'installation de OpenCV à partir de la source, J'ai remarqué qu'il n'y avait pas d'étape ./configure, mais qu'il y avait une étape cmake. Cela m'a donné l'idée que cmake était équivalent à ./configure. J'ai également lu que cmake peut générer des systèmes de construction tels que Makefiles, ce que fait l'étape ./configure.

Cependant, cet article (voir le premier paragraphe de {{X0} }) dit que cmake effectue également la construction réelle. Si tel est le cas, pourquoi l'installation d'OpenCV indique-t-elle make après cmake? De plus, je vois souvent que cmake est comparé à make, pas ./configure. Alors, où se situe cmake?

5
skr_robo 14 août 2017 à 20:47

2 réponses

Meilleure réponse

Oui, cmake est comme une étape de configuration des outils automatiques. Il n'effectue pas de build lui-même, mais génère simplement les fichiers nécessaires à la construction (Makefiles, projets Visual Studio, etc.).

CMake a l'option --build, mais cette option appelle simplement le système de construction sous-jacent, vous ne pouvez donc pas utiliser CMake comme outil de construction autonome. Ceci est différent des Makefiles simples, car vous pouvez les écrire manuellement puis les make.

4
arrowd 14 août 2017 à 18:16

L'article que vous avez mentionné compare CMake et Make, ce qui est déroutant. J'ai distingué les outils de construction, comme Make ou msbuild, et j'ai construit des générateurs ou des outils de méta-construction, qui génèrent des fichiers pour les outils de construction, comme CMake ou Autotools. Les deux outils peuvent être fusionnés en un seul comme cela est fait par Waf.

Vous avez raison de dire qu'un script de configuration classique a la même fonction qu'un appel CMake: il recherchera des bibliothèques tierces, installera le système de construction et préparera un en-tête de configuration.

Outre les projets GNU, CMake a pris un certain élan. KDE et Blender sont de grands projets utilisant CMake. LLVM a changé au cours des deux dernières années et même Boost a annoncé qu'il allait changer.

1
usr1234567 14 août 2017 à 20:32