tutorial quantum girona español descargar curso como visual-c++ visual-studio-2010 cmake propertysheet

quantum - Añadir hojas de propiedades de Visual C++ usando CMake



qgis tutorial (3)

Actualmente estoy portando un proyecto gcc a Visual C ++. Se define en un archivo CMake, y he creado una hoja de propiedades de Visual C ++ para ayudar en la compatibilidad (GccCompat.props). Cada vez que CMake regenera los archivos de proyecto de Visual C ++, la hoja de propiedades debe agregarse manualmente, ya que no sé cómo agregarla automáticamente. Entonces, la pregunta es:

¿Cómo puedo decirle a CMake que agregue una hoja de propiedades a la solución de Visual C ++ generada?


Esta funcionalidad se ha convertido en la compilación nocturna de CMake ( https://gitlab.kitware.com/cmake/cmake/commit/e390991846825799e619e072a28f1da58b7c89ba ), aunque todavía no está en una versión estable. Teóricamente, estará en la próxima versión, y las versiones de CMake se hacen con relativa frecuencia.

Para usarlo, establecería la propiedad VS_USER_PROPS en un objetivo. P.ej. set_target_properties(foo PROPERTIES VS_USER_PROPS "${props_file}") .

Sin embargo, no parece que pueda utilizar varias hojas de propiedades con esta opción, y reemplaza el archivo de propiedades del usuario predeterminado ( $(UserRootDir)//Microsoft.Cpp.$(Platform).user.props ). Para solucionar esto, las hojas de propiedades pueden incluir otras hojas de propiedades, por lo que podría crear una hoja de propiedades "maestra" que incluya cualquier otra hoja de propiedades que le gustaría usar (incluida la hoja de propiedades del usuario predeterminada).


Esta pregunta es un poco antigua, pero recientemente he encontrado el mismo problema al integrar GStreamer en mi proyecto. GStreamer viene con un conjunto de hojas de propiedades muy bien preparadas y de alta calidad y quería usarlas en lugar de piratear cosas en CMake.

Afortunadamente, este problema solo se limita a Windows y Visual Studio. Así que aquí está mi solución:

La idea es utilizar la función de archivo .user de Visual Studio . CMake no genera este archivo, por lo que es bastante seguro generarlo en el momento de la configuración. En el momento de la configuración, puede generar un archivo que tenga el nombre EXACTO como su archivo de proyecto pero que termine con una extensión .user.

Solución parcial:

Si su archivo de proyecto se llama my_project.vcxproj , debe crear otro archivo al lado llamado my_project.vcxproj.user . Según MSDN :

Un archivo de usuario (.vcxproj.user) almacena las propiedades específicas del usuario, por ejemplo, la configuración de la depuración y la implementación. El archivo vcxproj.user se aplica a todos los proyectos para un usuario en particular.

El contenido de este archivo para importar hojas de propiedades es algo como esto:

<?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="/path/to/sheet1.props" /> <Import Project="/path/to/sheet2.props" /> </Project>

No impecable, pero funciona hasta que CMake comienza a admitir hojas de propiedades. El archivo se puede crear utilizando el comando de file de CMake en el momento de la configuración.

Advertencia potencial

He notado que cuando agrego hojas de propiedades de esta manera, a veces no se muestran en la ventana del Administrador de propiedades (puede ser un error en Visual Studio Community 2013) pero siempre se importan correctamente y las dependencias se resuelven correctamente.


No estoy seguro de qué propiedades necesita. Algunos podrían establecerse directamente en CMake, como en este ejemplo para múltiples configuraciones:

set (CMAKE_CONFIGURATION_TYPES "A;B;C;D" CACHE STRING "Configurations" FORCE) foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} ) set (CMAKE_CXX_FLAGS_${OUTPUTCONFIG} "/ZI /Od") set (CMAKE_EXE_LINKER_FLAGS_${OUTPUTCONFIG} "/debug") endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )

Aparte de las variables enumeradas aquí , creo que CMake no tiene posibilidad de adjuntar hojas de propiedades.