build - titles - text reveal after effects
Tutorial para convertir Autotools a CMake (2)
Esta conversión es muy específica del proyecto, y eso hace que escribir un tutorial de aplicación general sea difícil.
Aquí está el comienzo de algunas herramientas que pueden darle una inspiración de qué hacer.
http://www.vtk.org/Wiki/CMake#Converters_from_other_buildsystems_to_CMake
===== Un interesante artículo relacionado con esto:
Por qué el proyecto de KDE cambió a CMake y cómo (continúa) http://lwn.net/Articles/188693/
Así que parece haber mucha escritura sobre el tema de Autotools vs. CMake, pero por mi vida parece que no puedo encontrar un buen tutorial sobre cómo convertir un proyecto de Autotools a CMake. ¿Alguien sabe de uno?
No existe una herramienta automatizada que convierta un sistema de compilación arbitrario de autotools a cmake. He convertido algunos proyectos moderadamente grandes de forma manual. Me gusta crear un archivo CMakeLists.txt
para cada conjunto de archivos configure.ac
y / o Makefile.am
, para facilitar la conversión de autotools a cmake.
Lamentablemente, este enfoque manual requiere desarrollar una experiencia en dos sistemas, ninguno de los cuales debe infligirse a ningún inocente.
Capture un registro de lo que la creación autotools realmente hace en su máquina. Esto le ayudará a verificar que su sistema de compilación CMake en realidad compila cada archivo, utilizando los mismos indicadores de compilación, y crea cada biblioteca y ejecutable que autotools hace; al menos en tu máquina, con tus opciones.
% ./configure [configure options]> configure_autotools.log
% make> make_autotools.log
% make install> make_install_autotools.log
En cada directorio que contiene un archivo
configure.ac
oMakefile.am
, incluido el directorio raíz del proyecto, cree un nuevo archivo CMakeLists.txt vacío. Agregue los comandos cmakeadd_subdirectory
(...) a cada archivo CMakeLists.txt no hoja para vincular todos los archivos cmake en una estructura de árbol. Agregue los mandatos cmake project () y cmake_minimum_required () a la parte superior de su archivo CMakeLists.txt de nivel superior.project(MyProject) cmake_minimum_required(VERSION 2.8) add_subdirectory(foo)
Ahora tiene un sistema de construcción de cmake consistente pero inútil que no hace nada. Agregue temporalmente algunos comandos de
message(...)
en los archivos CMakeLists.txt más profundos para verificar que todo esté conectado correctamente. Recuerde quemessage()
es su amigo al depurar problemas de configuración de cmake. Asegúrate de que tu infraestructura de cmake funcione probando una construcción ahora. Nada se construirá o instalará; pero es valioso ejercer la infraestructura de cmake en este punto.% mkdir build_cmake
% cd build_cmake
% ccmake -i [su raíz del proyecto]
[configurar, configurar, generar]
% hace VERBOSE = 1
% make install
Esta es la parte difícil. Uno por uno, complete sus archivos CMakeLists.txt. Aquí hay algunas pautas:
Abra dos editores uno al lado del otro, uno con el archivo CMakeLists.txt y el otro con el archivo Makefile.am/configure.ac correspondiente.
Abre tu navegador a la documentación de comandos de cmake .
En lugar de comenzar desde la parte superior, comience creando reglas de cmake para construir una pequeña biblioteca o ejecutable, si puede encontrar una en el proyecto (cmake
add_library()
oadd_executable()
). Usando este enfoque, puede construir su conversión de una pieza a la vez.Mantenga periódicamente la prueba de su sistema de compilación cmake a medida que agrega cada objetivo.
Me gusta utilizar el comando cmake
file(GLOB ...)
para crear listas de archivos fuente de forma compacta. Tenga en cuenta que esta es una opinión controvertida.Muchas stanzas autotools comunes tienen los comandos CMake correspondientes. Por ejemplo, autoconf AC_TRY_COMPILE se puede convertir a cmake TRY_COMPILE . Pero la mayoría de las veces encuentro que tengo que entender lo que hace cada pequeña estrofa de autotools y averiguar cómo escribir el cmake correspondiente. Además, hay una serie de módulos CMake que ayudan a crear archivos config.h de tipo autotools. Los archivos Makefile.am a menudo son más fáciles de convertir y, de hecho, pueden volverse más compactos después de la traducción a cmake.
Compare sus resultados de construcción de cmake con los registros de autotools que capturó en el paso 1. ¿Son iguales los indicadores de compilación? ¿Se construyen todos los mismos objetivos? ¿Están los mismos archivos instalados?
Lamentablemente, no he convertido autotools para cmake recientemente, por lo que no estoy en condiciones de escribir un completo "si ves x en Makefile.am, escribe y en CMakeLists.txt". ¿Puede alguien sugerir una buena ubicación para una wiki pública donde las personas que están convirtiendo activamente de autotools a cmake pueden acumular un conjunto completo de tales pautas? No estoy seguro de si esta respuesta es el mejor lugar para una lista así ...
Para obtener más crédito, una vez que todo esté funcionando, ajuste sus reglas de cmake para poder construir y ejecutar su proyecto desde Windows Visual Studio. ¡Inténtalo con autotools!