No es posible generar el campo Additional Manifest Files
en CMake (Comprobé el código fuente). Entonces tenemos que ser más astutos.
Visual genera un manifiesto propio (yourapp.exe.manifest.intermediate) y lo mezcla con el suyo. Entonces, tenemos que generar este manifiesto una vez, inhabilitar la generación y usar el manifiesto generado después.
Generando el manifiesto:
Este paso es opcional si usted sabe cómo escribir un manifiesto completo por sí mismo. Si usted es como el resto del mundo:
- Crear su propio manifiesto, como de costumbre
- Añádelo en la interfaz (
Additional Manifest Files
)
- recompilación, volver a vincular
- Localizar YourApp.exe.manifest (al lado de tu .exe). Cópielo en su directorio de fuentes y vuélvalo a versionar. No dude en cambiar el nombre de ella, como yourapp.final.manifest, si es más claro para usted
Desactivación de la generación:
IF(WIN32)
SET (CMAKE_SHARED_LINKER_FLAGS /MANIFEST:NO)
ENDIF(WIN32)
Usando el manifiesto generado después:
Esto se hace mediante una llamada manual a mt.exe (la herramienta de manifiesto que normalmente se llama después del vinculador ... a menos que esté deshabilitada) en un paso posterior a la compilación:
add_custom_command(
TARGET YourApp
POST_BUILD
COMMAND "mt.exe" -manifest \"$(TargetDir)\\yourapp.final.manifest\" -outputresource:"$(TargetDir)$(TargetFileName)"\;\#1
COMMENT "Adding manifest..."
)
(Probablemente necesite cambiar $ (TargetDir) a $ (OutDir) dependiendo de cómo haya escrito su CMake; Use el botón Visual Macros
para ver sus valores. Y recuerde: # 1 para ejecutables, # 2 para dlls)