qt visual-studio-2015 cmake visual-studio-2017

qt - CMake 3.9 ahora crea proyectos "autogen" en Visual Studio?



visual-studio-2015 visual-studio-2017 (3)

Estamos usando CMake, Qt y Visual Studio. Muchos de nuestros proyectos están configurados para ejecutar automoc, al pasar AUTOMOC ON a add_library .

Recientemente actualizamos a CMake 3.9.1, y Visual Studio ahora muestra un proyecto adicional para cada biblioteca automatizada. Por ejemplo, ahora tenemos un proyecto "Core" y un proyecto "Core_autogen" en nuestra solución.

(Esto ocurre tanto en VS2015 como en VS2017, y tanto Qt 5.8 como 5.9.1)

Esto tiene algunas consecuencias molestas:

  • Casi duplica el número de proyectos, agregando mucho desorden visual.
  • Automoc ya no se ejecuta cuando se construye un proyecto individual a través de la interfaz de usuario, lo que puede provocar errores sutiles al depurar problemas de compilación para un proyecto específico.

¿Alguien sabe si hay una manera de restaurar el comportamiento anterior de CMake para autogen?

O, salvo eso, ¿alguna forma de reducir al menos el desorden visual de los proyectos autogen?


De acuerdo con la documentación de CMake v3.9, puede usar AUTOGEN_BUILD_DIR para mover los archivos generados a una carpeta diferente.

De forma predeterminada, CMake usa <dir>/<target-name>_autogen donde:

<dir> es CMAKE_CURRENT_BINARY_DIR y <target-name> es NAME

O desde la propiedad de AUTOMOC , puede usar:

La propiedad global AUTOGEN_TARGETS_FOLDER se puede usar para agrupar los objetivos automoc en un IDE, por ejemplo, en MSVS.

La propiedad global AUTOGEN_SOURCE_GROUP se puede usar para agrupar archivos generados por AUTOMOC juntos en un IDE, por ejemplo, en MSVS.

Espero que esto ayude.



Esto recopila todos los proyectos de autogen en una carpeta:

set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER AutoMoc)