2009-04-29 24 views
40

¿Cuál es la mejor y más fácil forma de compilar (para Linux) una aplicación C++ escrita en Visual Studio? El código en sí está listo; solo usé libs multiplataforma.¿Cómo construir un proyecto de Visual C++ para Linux?

¿Es posible preparar todo en Windows en Visual Studio y luego compilarlo con una herramienta CLI en Linux? ¿Hay algún documento que describa esto?

EDIT: Algunos más información:

  • Liberaciones utilizado: STL, wxwidgets, impulso, asio, cryptlib.

  • Muy poco know-how de Linux.

editar # 2: Elegí la siguiente solución: Hacer nuevo proyecto con KDevelop y compilar todo lo que hay.

Respuesta

19

Estamos utilizando CMake para proyectos de Linux. CMake puede generar archivos de proyecto de KDevelop y Visual Studio, por lo que puede simplemente crear su archivo CMake como origen de los archivos IDE específicos de la plataforma. El generador KDevelop está bien, por lo que puede editar y compilar en KDevelop (que a su vez llamará a Make).

Por otro lado, si no tiene nada de lujoso, puede usar CMake o simplemente Make para construirlo en Linux, si quiere quedarse con su archivo de solución (que es lo que estoy haciendo actualmente para una biblioteca con aplicaciones de prueba). Este enfoque se complica cuando su proceso de compilación es más que simplemente "lanzar estos archivos al compilador y ver qué hace", por lo que la solución CMake es, en mi opinión, algo bueno para el desarrollo multiplataforma.

+0

Me gustaría que fuera el camino, que puedo usar la configuración de VisualStudio existente y guardarla como archivo MAKE. y usarlo bajo Linux. ¿Es eso posible? /mspoerr – mspoerr

+2

Visual C++, al menos hace algún tiempo, admitió la exportación de un proyecto/solución a un archivo MAKE. Puedes intentarlo, pero el archivo make resultante es (o fue en ese momento) un desastre sangriento. También podría intentar crear un XSLT para transformar el archivo del proyecto (no la solución) en lo que desee, incluido un archivo Makefile o CMake. – OregonGhost

4

¿Cuál es la mejor y más fácil forma de crear una aplicación de C++, que se escribió con Visual Studio, para Linux? El código en sí está listo: utilicé solo libs de plataforma cruzada.

  • Comprobar si hay algo que no es parte del estándar de C++
  • aclarar y repetir
  • Crear un makefile o un proyecto de KDevelop

Et voilà!

+1

puede este makefile pueden generar a partir VisualStudio? ¿Qué cambios son necesarios para que funcione bajo Linux? /mspoerr – mspoerr

+2

Algunas versiones de VS pueden generar makefiles para nmake, un sistema de compilación basado en CLI de Windows. Lo que encuentres en los sistemas * nix es un poco diferente. Tendrás que eliminar las diferencias. OMI, será más fácil O bien 1) Usar Code :: Blocks (o algún IDE multiplataforma) y gcc en tu Windows para hacer funcionar un sistema de compilación y luego usarlo en Linux O 2) usar KDevelop que tenga una apariencia -n-feel similar a VS para agregar archivos de origen/libs, etc. y obtener un sistema de compilación basado en autoconf creado para usted. – dirkgently

7

Aquí es cómo compilar código C manualmente en Linux sin herramientas de construcción adicionales:

gcc -s -O2 -o prog -I. -Iincludedir1 -Iincludedir2 -Llibdir1 -Llibdir2 code1.c code2.c -luse1 -luse2 

Sin embargo, si su proyecto es más grande que un par de archivos, es posible que desee utilizar una herramienta de construcción en su lugar (como CMake, consulte la respuesta de OregonGhost) para automatizar la compilación de muchos archivos y hacerlo incremental. Si usa una herramienta de compilación, ejecutará gcc bajo el capó, con argumentos similares más arriba. Es útil comprender los argumentos anteriores, para que pueda solucionar los problemas si falla su compilación automatizada.

Esto compilará code1.c y code2.c a ejecutable binary prog, cargando archivos .h de., Includedir1 e includedir2, cargando bibliotecas (por ejemplo, libuse1.so * y libuse2.tan *) de los directorios libdir1 y libdir2, usando las bibliotecas use1 (correspondiente al nombre de archivo libuse1.so *) y use2.

Si obtiene errores de símbolo no definidos en sus archivos .c, debe especificar más indicadores -I. Si obtiene errores de símbolo indefinidos en el archivo .o, debe especificar más indicadores -l. Si obtiene cannot find -l... errores, debe especificar más indicadores -L.

+5

Supongo que tiene más de un archivo. Compilar sin Makefiles es una tontería. – Zifre

+0

@Zifre: actualicé mi respuesta y recomendé una herramienta de compilación. Creo que mi respuesta fue y es perspicaz y útil para solucionar problemas, incluso si se utiliza una herramienta de compilación. – pts

+0

esto tiene que ser g ++ para un proyecto de C++ ¿verdad? –

5

8 años más tarde ...

me encontré con esta pregunta hoy y pensó que le gustaría echar un vistazo a Visual C++ for Linux.

Lanzado en marzo de 2016, VC++ para Linux le permite crear un proyecto en VC++ y luego compilarlo en una máquina/máquina virtual Linux utilizando herramientas Linux nativas. Además, también puede depurar su aplicación desde VS ya que las herramientas de Linux permiten que el depurador VS maneje GDB en su máquina/máquina virtual de Linux a través de SSH.

Parece que esto es casi exactamente lo @mspoerr estaba pidiendo :)

Cuestiones relacionadas