Comment utiliser CMake?

102

J'essaye d'utiliser CMake pour compiler opencv.

Je lis le didacticiel mais je ne comprends pas ce que sont les fichiers CMakeLists et comment est-il connecté à l'interface graphique de CMake?

Je ne pouvais pas non plus comprendre ce que sont les makefiles, sont-ils les mêmes que CMakeLists?

Et quel fichier est-ce que j'ai finalement ouvert avec visual-studio?

lital maatuk
la source
Si la question est liée à Windows, cela devrait être mentionné (peut-être avec une windowsbalise)
Basile Starynkevitch
En ce qui concerne CMake 3.13.3, la plate-forme Windows et IDE Visual Studio 2017, je suggère: wikihow.com/Use-CMake Regards.
George Theodosiou

Réponses:

30

CMake prend un fichier CMakeList et le produit dans un format de construction spécifique à la plate-forme, par exemple un Makefile, Visual Studio, etc.

Vous exécutez d'abord CMake sur CMakeList. Si vous utilisez Visual Studio, vous pouvez ensuite charger le projet / la solution de sortie.

Holtavolt
la source
2
Qu'est-ce que le Makefile? Où puis-je trouver le fichier projet / solution pour visualstudio?
lital maatuk du
3
Après avoir exécuté cmake (ou CMakeSetup et avoir appuyé sur generate), vous devriez pouvoir trouver le Makefile (si unix) ou les fichiers de projet quelque part dans l'arborescence du projet. L'emplacement peut être spécifié dans CMakeList. Voici une courte présentation que j'ai trouvée sur le wiki CMake que vous pourriez trouver utile: elpauer.org/stuff/learning_cmake.pdf
holtavolt
2
CMake configure l'ensemble du projet en utilisant un format de génération de votre choix, ce qui signifie qu'il configure tout pour que vous puissiez utiliser, par exemple, Visual Studio pour compiler. Par défaut (au moins sous Linux), il crée un projet qui utilise Make à la place. Make est utilisé pour construire réellement le projet, pas pour le configurer ou le configurer. Vous devez donc d'abord utiliser CMake pour configurer le projet, puis exécuter Make pour compiler et construire des éléments.
leinaD_natipaC
156

Je ne sais pas pour Windows (je ne l'ai jamais utilisé), mais sur un système Linux, il vous suffit de créer un répertoire de construction (dans le répertoire source supérieur)

mkdir build-dir

va dedans

cd build-dir

puis exécutez cmakeet pointez sur le répertoire parent

cmake ..

et enfin courir make

make

Notez que makeet cmakesont des programmes différents. cmakeest un Makefilegénérateur et l' makeutilitaire est régi par un Makefilefichier texte. Voir cmake et créer des pages wikipedia.

NB: Sous Windows, cmakepeut fonctionner et doit donc être utilisé différemment. Vous devrez lire la documentation (comme je l'ai fait pour Linux)

Basile Starynkevitch
la source
Quelle est la différence entre cmake et make? sont-ils des programmes différents?
lital maatuk du
4
Très bonne réponse; Je ne pouvais pas comprendre comment obtenir les fichiers de construction dans un sous-répertoire. Je ne comprends pas pourquoi la documentation officielle ne le mentionne pas.
TheBigB
Cela fonctionne sous Linux, mais sous Windows, cela s'arrête lors de la détection du compilateur C / C ++. Des idées comment faire ça?
bartlomiej.n
Cela dépend de la façon dont vous en particulier l' ordinateur est mis en place. Vérifiez que votre PATHvariable est correcte. BTW, je n'ai jamais utilisé Windows de ma vie (et j'ai écrit mon premier programme en 1974)
Basile Starynkevitch
2
Tant de votes positifs et la réponse ne dit rien sur Visual Studio.
Abyx
10

Oui, cmake et make sont des programmes différents. cmakeest (sous Linux) un générateur de Makefile (et Makefile -s sont les fichiers pilotant l' makeutilitaire). Il existe d'autres générateurs Makefile (en particulier configure et autoconf etc ...). Et vous pouvez trouver d'autres programmes d' automatisation de construction (par exemple ninja ).

Basile Starynkevitch
la source
Je pense que c'est un peu déroutant. cmake est un générateur de système de construction, et l' une des choses qu'il peut générer sont des makefiles (comme dans gnu.org/software/make ). Il existe cependant de nombreux autres systèmes qu'il peut générer et ce ne sont pas des "générateurs de Makefile". Sur macos (et probablement partout ailleurs), si vous exécutez cmake --help, cela vous donnera une longue liste des générateurs dont il dispose. Par exemple, cmake peut générer des projets Xcode - rien à voir avec make.
James Moore
0

En ce qui concerne CMake 3.13.3, la plate-forme Windows et l'IDE Visual Studio 2017, je suggère ceci guide . En bref, je suggère:
1. Téléchargez cmake> décompressez-le> exécutez-le.
2. Comme exemple, téléchargez GLFW> décompressez-le> créez le dossier à l'intérieur Build .
3. Dans cmake, parcourez "Source"> Parcourir "Construire"> Configurer et générer.
4. Dans Visual Studio 2017, créez votre solution.
5. Obtenez les binaires.
Cordialement.

George Theodosiou
la source