descarga winapi mingw cmake resource-files

winapi - descarga - cmake win64 download



¿Cómo construyo una aplicación Win32 con un archivo de recursos usando cmake y MinGW? (1)

Creo que tu problema está aquí:

<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> -o <OBJECT> <SOURCE>

Tal vez deberías escribir algo como esto:

<CMAKE_RC_COMPILER> <SOURCE> <OBJECT>

O más formal:

<CMAKE_RC_COMPILER> -i <SOURCE> -o <OBJECT>

El otro problema posible podría ser con - ¿qué extensión puede hacer sustitutos? Como Windress adivinará el formato de archivo de salida necesario a partir de eso.

Las referencias están aquí: www.mingw.org/wiki/MS_resource_compiler

Los archivos "res" no son apropiados para ld, como ya sabe, y el ejemplo de windres sourceware.org/binutils/docs/binutils/windres.html

hombre de windres

EDITAR por autor de la pregunta ...

El fragmento de código de cmake fijo es el siguiente ...

if(MINGW) set(CMAKE_RC_COMPILER_INIT windres) ENABLE_LANGUAGE(RC) SET(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> -O coff <DEFINES> -i <SOURCE> -o <OBJECT>") endif(MINGW)

Probablemente debería estar configurando una variable de indicadores en lugar de insertar la opción -O en la plantilla de comando, pero esto funciona.

En teoría, es muy fácil construir una aplicación Win32 con un archivo de recursos usando cmake. En un comando add_executable , un archivo de recursos se puede enumerar tan fácilmente como un archivo fuente C o C ++. Sin embargo, existe un error conocido al construir usando herramientas MinGW.

Encontré una solución, que es incluir lo siguiente en CMakeFiles.txt ...

if(MINGW) set(CMAKE_RC_COMPILER_INIT windres) ENABLE_LANGUAGE(RC) SET(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> -o <OBJECT> <SOURCE>") endif(MINGW)

Desafortunadamente, esto no parece funcionar. Lo que parece suceder es que windres genera un archivo <whatever>.rc.res que no comprende.

En mis búsquedas, he desarrollado una fuerte sospecha de que el soporte de Win32 es visto como una prioridad muy baja, especialmente fuera de Visual Studio. Esto es comprensible, ya que Win32 obviamente no es tan importante como lo era antes. Y, por supuesto, Visual Studio Express Editions está disponible de forma gratuita.

Aun así, sería conveniente para mí si pudiera usar MinGW GCC para algunas aplicaciones viejas de Win32 que aún utilizo. Si nada más, puedo obtener estadísticas de cobertura de prueba GCOV.

Obviamente si todo lo demás falla, siempre podría manejar los archivos de recursos usando un comando de compilación personalizado. Un problema es que no estoy familiarizado con windres o ld, o cómo MinGW está destinado a manejar archivos de recursos de Win32. Otra es que realmente no quiero reinventar la rueda si alguien ya tiene una rueda superior que les gustaría compartir conmigo.

Entonces, básicamente, ¿cómo puedo apoyar la construcción de aplicaciones Win32 con archivos de recursos usando cmake y usando MinGW (pero sin romper el soporte para Visual Studio)?