2010-02-02 12 views
89

¿Alguien puede proporcionar el (los) vínculo (s) al buen tutorial de CMake excepto que es muy costoso y difícil de obtener official one?CMake tutorial

Especialmente interesante en el uso de CMake para los proyectos de Fortran, pero le agradeceré cualquier buen tutorial.

Actualización.

Lo que ya encontré es CMake articles in Kitware Public Wiki. Fortran example es absolutamente inútil. = (. También a la espera de respuestas que estoy jugando con SCons se ve bien =).

+0

¿Qué quiere decir "absolutamente inútil"? Hay una serie de buenos tutoriales vinculados en Tutoriales -> Introducciones básicas. Agregué algunos de ellos yo mismo. ¿Qué falta en ellos que los hace inútiles? ¿Estás buscando un detalle o técnica en particular? – mloskot

+1

Como dije, soy "especialmente interesante en el uso de CMake para proyectos de Fortran". Me gustaría ver algún tipo de guía paso a paso. – Wildcat

+0

¡Y pensé que Bill era un veterano razonable! Qué diablos: D – mlvljr

Respuesta

157

En primer lugar, recomiendo una muy buena introducción a la conferencia CMake y herramientas relacionadas por Bill Hoffman disponible en YouTube:

CMake/CPack/CTest/CDash Open Source Tools to Build Test and Deploy C++ Software

A continuación, tome una visión general rápida y sienta CMake scripting, examples rápido y simple y también un poco de gusto de CMake syntax, por lo que le ayudará a leer las secuencias de comandos CMake.

Ahora, puede ponerse inmediatamente manos a la obra Tutorial que está disponible en CMake CVS. Es sin hablar, pero el código es el material tutorial de que se utiliza en el masterizado de libros de CMake. Sin duda, deberá consultar el manual para conocer detalles sobre varias macros.

Después de comprender los fundamentos de CMake, puede comenzar a profundizar en técnicas más avanzadas, así como también leer archivos CMakeLists.txt existentes para ver cómo otros piratean los scripts de CMake.

Para ejemplos reales con recorrido completo, verifique el recently announced multipartida tutorial from Wigner GPU Lab en GitHub.

Existe también, un poco anticuado, y dos partes de Bruno Abinader tutorial con buen comentario:

I can also recommend Empirical approach to CMAKE

También encontré KDE documentations for CMake scripting muy útil . Incluye una muy buena introducción Development/Tutorials/CMake. Sin embargo, algunas características específicas de KDE y macros personalizadas pueden ser un poco molestas.

Creo que es un material bastante bueno para empezar. Además, no te olvides de las listas de correo de CMake con una comunidad muy útil.

Tutorial from "Mastering CMake" now online! - Bill Hoffman acaba de anunciar en la lista de correo. Aquí es CMake Tutorial Now on the Web

Learning CMake (PDF) - tutorial escrito por Pau Garcia i Quiles

CMake: Getting Started - tutorial completo de Wiki del proyecto MASH.

Aquí está el video del seminario grabado en marzo de 2012 - Introduction to CMake, muy recomendable.

The Ultimate Guide to Modern CMake por Rico Huijbers - dedicado a proyectos C/C++, explica los destinos importados/exportados y los archivos de configuración del proyecto también.

Aquí está el repositorio Git con CMake tutorial presentation preparado por Eric Noulard disponible en varios formatos imprimibles.

Aquí hay un PDF de 50 páginas con Learning CMake de Pau Garcia i Quiles.

desarrolladores Fortran, pero no sólo, puede encontrar estos dos artículos útiles:

Por último, hay Awesome CMake proyecto que mantiene la lista curada de impresionante CMake scripts, módulos, ejemplos y otros.

Por favor, informe cualquier enlace roto en los comentarios a continuación.

+2

Muchas gracias por los enlaces. – Wildcat

+3

¿Se ha lanzado algo nuevo en este frente? Intento entender esto, pero debo decir que KitWare realmente debería esforzarse más en la documentación. Comprar un libro por $ 59 puede estar bien si eres una empresa, pero yo no. El "tutorial gratis de CMake" simplemente crea más preguntas de las que responde. – Skurmedel

+0

@Skurmedel No tengo conocimiento de ninguna actualización. Puede intentar preguntar en [email protected] ml – mloskot

12

Fortran debería ser más o menos lo mismo que C/C++. Simplemente agregue los archivos .f o .f90 en lugar de los archivos .c o .cxx, y también incluya Fortran en la convocatoria del proyecto. CMake 2.8 tiene el mejor soporte para las versiones Fortran de CMake. CMake tiene un muy buen soporte de Fortran. Puede analizar el código fuente y ordenar la compilación en función de la generación requerida del archivo .mod que ocurrirá durante la compilación de Fortran. Si tiene preguntas específicas sobre Fortran o un compilador que no funciona, la lista de correo de CMake sería el lugar indicado.

Algo como esto:

project(testf C CXX Fortran) 

add_library(hello STATIC hello.f) 
add_library(world ${_SHARED} world.f world.def) 
add_executable(testf testf.f) 
target_link_libraries(testf hello world) 

Eso es de la prueba de Fortran en CMake: http://public.kitware.com/cgi-bin/viewcvs.cgi/Tests/Fortran/?root=CMake (no lo habrá mas)

CMake también tiene un módulo para determinar C/Fortran vinculación:

http://public.kitware.com/cgi-bin/viewcvs.cgi/Modules/FortranCInterface.cmake?revision=1.19.2.2&root=CMake&view=markup

5

Solo para informarle que he movido mi blog a un nuevo host (http://brunoabinader.com) y que los tutoriales de CMake también se movieron (post link). Tengo la intención de continuar la serie de tutoriales sobre temas como internacionalización (i18n), documentación (doxygen, qdoc), integración de pruebas unitarias, modos de depuración/liberación, soporte multiplataforma y otros.

+3

Ese sitio parece muerto. – kynan

+1

¡Reparado! Gracias por el aviso :) – brunoabinader

+2

Estos enlaces están muertos de nuevo. – bames53

2

Para CMake, las referencias mencionadas anteriormente cubren bastante todo lo que puedes encontrar.

Desde mi experiencia, practicar es lo mejor que puedes hacer y su documentación oficial en su sitio web es siempre el mejor recurso para referencia.

La parte más difícil de aprender CMake es cuando quieres hacer algunas cosas especiales que CMake no proporciona directamente, y tienes que encontrar la manera de hacerlo funcionar.

Hay algunos proyectos de código abierto que ya se han entregado con CMake, como Curl y Boost, si desea ver cómo se utiliza realmente CMake en un proyecto real súper complicado. Ese siempre es un buen lugar para comenzar.

Por cierto, el problema de SCon es su dependencia de Python y para nosotros, necesitamos construir en AIX/Solaris/Linux (CentOS & RedHat)/HP-UX. Entonces probablemente no quiera Python, especialmente las versiones más bajas no funcionan correctamente con CMake.

5

¿Qué tal esto:

cmake_minimum_required (VERSION 2.6) 
project (hello) 
enable_language (Fortran) 
add_executable (hello hello.for) 

Tener un archivo-.para así:

Program heyDEM 
    write (*,*) 'Hello heyDEM!' 
    End Program heyDEM 

Es muy básico, pero debería ayudar a modo de introducción

+1

+1 para 'enable_language (Fortran)', que era lo único que necesitaba para que funcionara. – Stefan

+0

Los comandos project() y enable_language() se pueden combinar como proyecto (hello Fortran), aunque las dos opciones no son idénticas (ver man cmakecommands). – AstroFloyd

0

Así es como he conseguido hace un tiempo:

PROJECT(FORTRAN_APP CXX Fortran) 
SET(APP_NAME MyApp) 
ADD_EXECUTABLE(${APP_NAME} main.cpp test1.F test2.f test3.f90) 
SET_TARGET_PROPERTIES(${APP_NAME} PROPERTIES LINKER_LANGUAGE CXX) 

Referencia: CMake mailing list