2011-08-11 20 views
5

Actualmente estoy transfiriendo un proyecto creado con qmake a CMake.CMake + Qt: define el directorio de salida moc/ui

En la versión con qmake, en el archivo .pri, hubo

MOC_DIR = .moc/$${PLATFORM_NAME} 

que permitió producir los archivos temporales MOC en un directorio dado, manteniendo las fuentes limpias. ¿Cómo hacer lo mismo con CMake?

Nota: con CMake, utilizo el paquete FindQt4.cmake y el comando QT4_WRAP_CPP().

+5

En general, utiliza una compilación fuera de árbol para mantener sus fuentes limpias. Ver http://www.vtk.org/Wiki/CMake_FAQ#Out-of-source_build_trees – baysmith

Respuesta

4

Como dice baysmith, si su objetivo es mantener limpio su directorio de origen, la verdadera solución es usar la característica de compilaciones de CMake "out-of-source". Si está en Windows, configure "Dónde construir los binarios" en un nuevo directorio, diferente del directorio "Dónde está el código fuente". Si está en Unix, que es algo como esto:

cd <source directory> 
mkdir build 
cd build 
cmake .. 
make 

Mediante la ejecución de CMake en un directorio diferente, todos los archivos de generación voy a entrar en ese directorio, y sus fuentes se mantienen limpios. (Nota: el directorio de compilación no tiene que estar dentro del directorio de origen. Consulte CMake wiki para obtener más información.)

Si "fuera de la fuente" no funciona para usted, pude encontrar uno otra opción. Según lo que puedo decir del archivo Qt4Macros.cmake instalado con mi CMake 2.8, no se puede acceder a él como un parámetro de configuración. Aquí está la línea correspondiente:

SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC}) 

La solución es cambiar toda su MOC incluyen directrices para especificar la subcarpeta desea construir a.

#include "moc/mainwindow.moc" 

Después de crear el directorio moc dentro de mi directorio de construcción, no hubo problemas de construcción y el archivo de MOC fue en el nuevo directorio.

Cuestiones relacionadas