2011-11-02 13 views
12

He estado usando CMake con C++ para compilar bibliotecas y ejecutables y me gustaría usar el mismo para el ir al lenguaje de programación.¿Cómo hago para que CMake funcione con el lenguaje de programación go?

¿Qué pasos debo seguir para configurar CMake para que funcione con el lenguaje de programación go?

Básicamente, mi compilador es 6g que produce un foo.6 compilado - Lo envío a un enlazador a través de 6l foo.6 y estoy listo. Tengo el compilador y el enlazador ya creados e instalados.

Obviamente, puedo simplemente escribir un archivo Makefile simple para esto, pero sería bueno usar CMake constantemente en todo mi proyecto.

TIA para cualquier consejo que me ayude a comenzar.

Respuesta

16

Es posible que desee implementar el soporte de CMake 'para Go. En términos generales se trata siguientes pasos:

  1. Crear módulo CMakeDetermineGoCompiler.cmake, que encontraría Ir compilador para el sistema actual.
  2. Crear CMakeGoCompiler.cmake.in - una plantilla , que se configura mediante CMakeDetermineGoCompiler.

  3. Crear CMakeTestGoCompiler.cmake, módulo que compile una fuente marcha sencilla para comprobar si funciona el compilador.

  4. Crear CMakeGoInformation.cmake, que fijaría algunos las variables relacionadas con el lenguaje (CMAKE_GO_LINK_EXECUTABLE y así sucesivamente)

Estas cosas deben ser colocados en CMAKE_MODULES_DIR. Como referencia, puede ver cómo se implementa el soporte de Java/CXX.

Alternativamente, si no quiere meterse con tales cosas internas, puede resolver su tarea creando una macro(), que crearía un conjunto de objetivos/comandos personalizados (vea add_custom_ {target, command}() documentación).

+0

tyvm - ¡Voy a echar un vistazo! – kfmfe04

+1

¡Muchas gracias! He estado buscando esta información simple durante dos semanas y fue frustrante porque en la carpeta Módulos de cmake hay tantos archivos y se vuelve confuso si solo quieres comenzar de a poco. ¡Gracias de todos modos! ¡Respuesta impresionante! –

+0

¡Guau! Desearía haber encontrado esta respuesta hace un año cuando empecé a tratar de hacer esto.Respuesta bien escrita :) – DavidZemon

6

Le conviene no utilizar CMake (o cualquier otro sistema de compilación).

Go tiene una forma simple e integrada de compilar paquetes: go build (que también hace que go get y go install funcionen). go build, por diseño, no requiere herramientas adicionales como make o cmake.

Si usa CMake (o cualquier otro sistema de compilación), hará la vida más difícil para usted (si planea usar librerías desarrolladas por otros) o para otras personas (si planea desarrollar bibliotecas destinadas a ser usado por otros).

+3

Creo que la excepción a esto es cuando se usa 'gccgo' y se combinan archivos de objetos con proyectos existentes de C, Fortran, Ada o C++, que ya usan CMake. – Alexander

+1

O creando archivos intermedios como protobuffers, o compilando tarballs distribuibles para su lanzamiento, o básicamente un montón de otras tareas que las personas parecen olvidar para las personas que escriben proyectos que son más complicados de lo que 'go get' puede manejar. –

Cuestiones relacionadas