Configuración de un proyecto de C ++ multiplataforma en Eclipse con bibliotecas multiplataforma

Estoy trabajando en un proyecto de C ++ multiplataforma con otras 8 personas que utiliza las siguientes bibliotecas:

  • Biblioteca OpenCV
  • Boost C ++ Library

Se pretende que el proyecto sea multiplataforma, por lo que todos los usuarios han acordado no utilizar el código específico de la plataforma y, para mantener las cosas lo más simples posible, todos los usuarios utilizarán Eclipse como su IDE. Sin embargo, algunos usarán Eclipse para Windows, mientras que otros usarán Eclipse para Linux.

Dado que el proyecto se alojará en SVN, nos gustaría evitar conflictos con diferentes files de configuration (como crear files, eclipse, proyectos, etc.) que se comparten. También nos gustaría compartir tantos files de configuration como sea posible a través de SVN, para mantener la configuration lo más simple posible.

Supongamos que todos los usuarios han configurado correctamente las variables del sistema e instalado las herramientas de compilation necesarias (como make, cmake, etc.) y han configurado sus configuraciones de Eclipse configuradas correctamente (pero no las configuraciones específicas del proyecto).

¿Cómo configurar el proyecto una vez y qué files de configuration compartir en el repository, para que los usuarios de Windows y Linux puedan comstackrlo sin modificar los files de configuration recuperados del repository SVN?

(No estoy buscando la solución completa que funcione específicamente para esas 2 bibliotecas que mencioné, por lo que agradecería una explicación general paso a paso que me permitiría agregar fácilmente otra biblioteca).

Discusión General:

Necesitarás instalar Cygwin o algo similar para hacer que GNU Autotools Toolchain esté disponible para Eclipse en Windows: ¿Cómo lidiar con Eclipse CDT + Cygwin?

Una vez que su cadena de herramientas, Eclipse, con conectores CDT y SVN estén lists en sus máquinas de desarrollo, siga los siguientes pasos.

  1. Abra Eclipse y cambie a CDT: click Ventana-> Abrir perspectiva-> Otro … y select C / C ++
  2. Seleccione: Eclipse-> Archivo-> Nuevo-> Proyecto C ++
  3. Nombre del proyecto: espectador
  4. Seleccione: Tipo de proyecto-> GNU Autotools-> Hello World C ++ Autotools Project
  5. Haga clic en Siguiente
  6. Haga clic en: finalizar
  7. Haga clic con el button derecho en el Explorador de proyectos: visor-> Reconfigurar proyecto
  8. Haga clic en: Consola-> Mostrar el submenu de la console seleccionada -> # CDT Global Build Console. Si la salida "autoreconf -i" es nominal, continúe con el paso 9. Si la console informa: sh: autoreconf: command no encontrado, luego agregue la ruta al command autoreconf al Entorno de compilation del proyecto:
    1. Haga clic con el button derecho en el Explorador de proyectos: visor-> Propiedades-> C / C ++ Build-> Entorno-> Agregar …
    2. Nombre: RUTA
    3. Valor: path_to_autoreconf: $ {env_var: RUTA}
    4. Haga clic en Aceptar
    5. Haga clic en: Aplicar
    6. Regresa al paso 8.
  9. Haga doble clic en: Explorador de proyectos-> visor-> src-> viewer.cpp
  10. Agrega un código:

    include <opencv / cv.h>

    include <opencv / highgui.h>

    incluye <cassert>

    int main (int argc, char * argv []) {

    assert (argc> 1);

    CvMat * img = cvLoadImageM (argv 1 );

    cvNamedWindow ("Imagen", CV_WINDOW_AUTOSIZE);

    cvShowImage ("Imagen", img);

    cvWaitKey (0);

    return 0;

    }

  11. Haga doble clic en: Explorador de proyectos-> visor-> configure.ac e ingrese el siguiente código debajo de AC_PROG_CXX.

    AC_CHECK_LIB ([opencv_core], [cvSetZero], [], [])

    AC_CHECK_LIB ([opencv_highgui], [cvShowImage], [], [])

    AC_CHECK_LIB ([boost_regex-mt], [regexecA], [BOOST_LIB_SUFFIX = "- mt"], [BOOST_LIB_SUFFIX = ""])

    AC_SUBST (BOOST_LIB_SUFFIX)

  12. Haga doble clic en: Explorador de proyectos-> visor-> src-> Makefile.am e ingrese el siguiente código. >

    bin_PROGRAMS = espectador

    viewer_SOURCES = openCvFocusIssue.cpp

    viewer_LDFLAGS = -lboost_regex @ BOOST_LIB_SUFFIX @ -lopencv_core -lopencv_highgui

  13. Repita el paso 8, autoreconf (Reconfigurar proyecto)
  14. Haga clic en: Explorador de proyectos-> visor
  15. Construya el proyecto haciendo clic en el martillo en la barra de herramientas. Si no ve el martillo, Ventana-> Abrir perspectiva-> Otro … y select C / C ++. Si C / C ++ no aparece, instale el CDT.
  16. Haga clic en: Explorador de proyectos-> visor y luego Ejecutar-> Ejecutar, luego en la window Ejecutar como-> Aplicación C / C ++ local, luego en la window Iniciar selección de configuration de debugging-> gdb / mi y presione enter. Deberías ver Hello World.
  17. Salga de Eclipse y navegue hasta el directory del proyecto del visor.
  18. En la línea de command, ejecuta make dist
  19. Asegúrese de tener un viewer-1.0.tar.gz o un file con un nombre similar, y luego elimínelo: rm viewer-1.0.tar.gz
  20. En la línea de command, haga que limpiar
  21. En el mismo lugar, el problema hace distclean.
  22. Navegue hasta el directory del espacio de trabajo que contiene el proyecto del visor.
  23. Mueva todo el directory del visor al directory que contiene la salida svn en la que desea colocar el proyecto del visor.
  24. Cambie los directorys a donde acaba de mover el visor.
  25. svn add viewer && svn ci -m "Proyecto eclipse-autotool agregado"
  26. Abra eclipse y asegúrese de tener un conector SVN instalado.
  27. Elimine el proyecto "viewer" de la vista Project Explorer.
  28. Abra eclipse y agregue este checkout de repository SVN a la perspectiva de Equipo.
  29. Importe el proyecto del visor desde la salida del repository SVN.
  30. Vuelva a la perspectiva de C / C ++ y diviértase.

Dos sugerencias:

  • Use cmake: me encanta esta herramienta. Hay un poco de curva de aprendizaje, pero si lo haces bien, todo el proyecto includeá los files cmake y cuando una persona primero lo revisa ejecuta cmake para generar sus makefiles (o files de proyecto VC ++, etc.) con todos los diferentes reglas para linux o windows que uno pueda necesitar.

o

  • Comtesting una configuration básica para el proyecto, luego agrega esas configuraciones al git / svn ignora para que nadie las vuelva a ver nunca, luego cuando hagas la compra por primera vez debes ejecutar tu configuration, pero después de eso no ser sobrescrito