2011-02-08 8 views
7

estructura de directorios de mi proyecto es básicamente la siguiente manera:Habiendo CMake puso genera binarios en una estructura de directorios específica con activos

root/src

raíz/activos

root/biblioteca

I actualmente tiene CMake configurado para compilar el origen, compilar la biblioteca y luego vincularlos, llamando a make desde el directorio raíz.

Luego, tengo que mover manualmente el archivo ejecutable al directorio de activos original para ejecutarlo, ya que es donde se espera (y queremos probar con nuestra estructura de directorios en activos lo más cercano a lo que esperamos ser cuando esté hecho).

Entonces, ¿hay alguna manera de decirle a CMake que pegue automáticamente el binario compilado en ese directorio, así como también copie los activos? Dado que estamos trabajando fuera de compilaciones de fuentes, volver a colocar el ejecutable en la carpeta de recursos del origen del proyecto original parece extraño.

En resumen, dos preguntas: ¿Hay alguna manera de hacer que CMake copie activos y códigos, y hay alguna forma de copiar el ejecutable generado en una ubicación específica en el árbol de compilación?

Cualquier ayuda sería apreciada --- ¡gracias!

Respuesta

9

Aquí está un ejemplo sencillo con una estructura como la suya:

  • root/src/main.cpp (sólo archivo de origen)
  • raíz/activos (en el que necesito el ejecutable ir)

Aquí está el archivo de cmake:

PROJECT(HelloCMake) 
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${HelloCMake_SOURCE_DIR}/assets) 
add_executable (HelloCMake src/main.cpp) 

Cuando construyo contra esta utilizando Visual Studio consigo el outp ut puesto en root/assets/debug Tendría que excavar para descubrir cómo deshacerme de la carpeta de configuración adicional (depuración). No es perfecto, pero con suerte eso te lleva por el camino correcto.

Editar ... Aún mejor:

INSTALL(TARGETS HelloCMake DESTINATION ${HelloCMake_SOURCE_DIR}/assets) 
+0

Esto parece funcionar perfectamente para nuestro proyecto. "make install" y VS pegan las cosas en el lugar correcto, ¡parece! (Lo único que se piensa al respecto es que parece que está mal usar el comando de instalación, que no estoy familiarizado, pero funciona. No estoy seguro de qué otra cosa se haría.) – Kozaki

+0

Esto es oro para proyectos de Cmake con cierta complejidad – GameDeveloper

Cuestiones relacionadas