2012-04-10 12 views
5

Entiendo que Jam crea proyectos existentes y CMake genera proyectos para compilar. Pero, dado que prefiero generar proyectos que pueda utilizar en varios IDE en lugar de tratar de integrar Jam en esos IDE, ¿alguien ha tenido alguna experiencia/éxito convirtiendo un Jamfile en un archivo CMakeLists.txt?Migrar de Jam a CMake

Respuesta

4

Solía ​​usar Jam para todos mis proyectos Linux ya que era más fácil que los archivos make normales. Luego descubrí CMake y no volví. Es tan fácil escribir archivos CMakeLists.txt como escribir archivos Jam, y se obtiene soporte IDE específico de plataforma de forma gratuita, aunque IMO los proyectos IDE no son tan limpios como algo generado a mano.

Por lo que he visto, muy pocas personas usan Jam en estos días, a pesar de sus muchos puntos fuertes. Afirma ser capaz de construir en varias plataformas, pero al mismo tiempo, ya no parece disfrutar del desarrollo activo, por lo que tiendo a desconfiar de sus reclamos multiplataforma.

Hasta donde yo sé, no hay ninguna herramienta para convertir automáticamente una jerarquía de Jamfiles en una jerarquía de archivos CMakeLists.txt, aunque dicha herramienta sin duda sería un proyecto factible. Sin embargo, gracias a la impopularidad de Jam y, en menor medida, CMake, a menos que usted o yo tengamos algo de tiempo libre, esa herramienta no está en el horizonte. :(

Si el proyecto no es demasiado complejo, algunos búsqueda simple y reemplazar las operaciones deben transformar un Jamfile en un archivo CMakeLists.txt. Si su proyecto es complejo, y luego convertirlos a mano es probablemente su mejor apuesta.

Algunas transformaciones simples:

  • HDRS += a.h b.h c.h ; se convierte en include_directories(a.h b.h c.h)
  • Main HelloWorld : main.cpp utils.cpp ; se convierte en add_executable(HelloWorld main.cpp utils.cpp utils.h)
  • Library helper : helper.cpp se convierte en add_library(helper STATIC helper.cpp helper.h)
  • SubDir foo ; convierte add_subdirectory(foo)
  • LinkLibraries HelloWorld : libhelper ; convierte target_link_libraries(HelloWorld helper)

Los proyectos IDE que genera CMake No incluya automáticamente archivos de cabecera relacionados, por lo tanto, he incluido explícitamente los importantes en los ejemplos anteriores. Hay un lindo ejemplo here, si aún no lo has visto.

1

Para la conversión de Atasco a CMake, podría ser útil intentar extender vcproj2cmake para que también tenga una implementación del analizador de Jam (la parte del generador para las secuencias de texto de sintaxis de CMake ahora es bastante capaz).