2010-03-13 15 views
10

gcc 4.4.2/Visual Studio C++ 2008cmake y visual studio

He estado usando cmake en linux, sin ningún problema.

Ahora he transferido la aplicación para que se ejecute en Windows.

que genera los archivos de solución utilizando -G cmake "Visual Studio 2008 9 ../src"

Sin embargo, sé que cmake sólo crea un Makefile que es utilizado por el compilador para generar la aplicación.

Abro mi solución en Visual Studio, presiono la tecla F7 para compilar.

Me pregunto, ¿realmente usa el Makefile que generó cmake? ¿O simplemente está compilando la aplicación como cualquier programa de estudio visual normal?

Muchas gracias por cualquier consejo,

Respuesta

18

Cmake genera una solución de Visual Studio y un archivo de proyecto.

La solución contiene al menos tres proyectos:

  • ALL_BUILD
  • YourProject
  • ZERO_CHECK

La solución está configurado de modo que cuando usted construye su proyecto (solución de acumulación, o construir proyecto) se construirá "YourProject" y luego se construirá ZERO_CHECK, causando que se ejecute cmake y verifique si algo ha cambiado. Si algo ha cambiado, la solución y el archivo del proyecto se regenerarán y Visual Studio le preguntará si desea volver a cargar.

La compilación de su programa es hecha por Visual Studio, como lo haría si la configura manualmente, pero Visual Studio ejecutará cmake, y así comprobará si algo ha cambiado, y los archivos de proyecto deberían regenerarse.

+0

Esto es fundamentalmente correcto, pero el proyecto ZERO_CHECK se construirá antes que cualquier otro proyecto de Visual Studio. Todos los proyectos que CMake genera tienen una dependencia de compilación directa a ZERO_CHECK, excepto el proyecto INSTALL de CMake, que solo tiene una dependencia en ALL_BUILD (que a su vez tiene una dependencia a ZERO_CHECK ...) – Manuzor

10

CMake genera "real" .vcproj archivos, por lo que Visual Studio va a construir su proyecto como un proyecto normal de Visual Studio. No hay makefiles involucrados.

+0

La parte que me interesa es la CMakeList.txt. ¿El compilador hace algo con esto? La razón por la que pregunté fue cuando edité mi CMakelists.txt Recibí un error de enlace porque no agregué un nombre de biblioteca "ws2_32. Es decir, TARGET_LINK_LIBRARIES (clt cliente ws2_32). Entonces, ¿cómo utiliza el compilador CMakeLists.txt? Gracias. – ant2009

+3

CMake crea archivos * .vcproj según la información en el archivo CMakeLists.txt. El comando TARGET_LINK_LIBRARIES le dice a CMake que coloque las directivas necesarias en los archivos * .vcproj para que el compilador de Visual Studio se vincule con las bibliotecas correctas. – JesperE

Cuestiones relacionadas