c++ makefile cmake box2d

c++ - ¿Qué hace cmake..?



makefile box2d (3)

Obtuve la fuente del proyecto Box2D y quiero compilar la parte del banco de pruebas. La carpeta del proyecto contiene carpetas como: freeglu glui testbed (una demostración) helloword (una demostración) Box2D Build CMakeFiles

Hay muchas CMakeLists.txt en todas las carpetas diferentes. Estaba pensando que debería hacer todos esos archivos para que los archivos se creen en todos los lugares requeridos. Leí esto (como instrucciones para hacer lo que quiero que quiero):

wget http://box2d.googlecode.com/files/Box2D_v2.2.1.zip unzip Box2D_v2.2.1.zip cd Box2D_v2.2.1/Build cmake .. make

¿Qué hace el cmake ..? No hay CMakeLists.txt en la carpeta de compilación.


Bueno, .. es una abreviatura de la carpeta principal, por lo que presumiblemente actuará sobre lo que encuentre en Box2D_v2.2.1 .


cmake .. genera cmake .. make en el directorio actual, usando el archivo ../CMakeLists.txt como punto de partida. El comando make , ejecutado después de esto, construye el programa, utilizando los makefile generados como entrada. Esto es conveniente para mantener un código fuente y generar resultados en diferentes carpetas. La sintaxis general es: cmake source-dir (por supuesto, hay muchos otros switches).


cmake es un generador de makefile.

Cuando llama a cmake [path] , le pide que genere un Makefile en el directorio actual siguiendo las instrucciones dadas en [path]/CMakeLists.txt

Por lo general, cmake muestra algunos mensajes mientras está funcionando, y después de que se realiza sin errores, puede escribir "make" para ejecutar su Makefile recién creado.

Los archivos CMakeLists.txt pueden hacer referencia a otros archivos CMakeLists.txt en los subdirectorios, por lo que normalmente solo le interesan los CMakeLists.txt del directorio superior , no los otros.

Usar un directorio "build" vacío es una técnica llamada "build fuera de la fuente", en la que todos los archivos generados (.o, ejecutable, Makefile, .anything) se generan en el directorio "build" separado y no se mezclan con archivos fuente. Si desea limpiar todo, puede eliminar todo el contenido del directorio de compilación.

De hecho, puede poner su directorio de "compilación" en cualquier lugar, siempre y cuando le dé a cmake la ruta correcta de los principales CMakeLists.txt. Incluso puedes tener varios directorios de compilación. Es muy útil si necesita varias compilaciones diferentes al mismo tiempo (con diferentes opciones, diferentes versiones de gcc, etc.)

En los programas anteriores, también genera el Makefile, pero utilizando ./configure (esto se llama herramientas automáticas. Es posible que ya lo haya encontrado). cmake es considerado un sucesor de las auto-herramientas.