¿Alguien puede enumerar los pasos específicos y detallados para configurar mc.exe (el compilador de mensajes) para compilar un archivo .mc en un archivo .rc como un paso de compilación personalizado en VC++ 2010?
Realmente estoy perdido en cómo hacer esto.¿Configura el compilador de mensajes (mc.exe) como un paso de compilación personalizado en VC++ 2010?
Respuesta
Haga clic derecho en el proyecto, Agregue + Nuevo elemento, seleccione Archivo de texto, asígnele el nombre Blah.mc. Ingrese o pegue las definiciones. Haga clic con Blah.mc, propiedades, estructura de encargo paso: la línea
- Comando = mc $ (InputPath)
- Salidas = $ (InputName) .rc
editar el archivo .rc, agregar:
#include "Blah.rc"
Funcionó para mí, debería estar cerca.
Si desea utilizar una regla de generación personalizada, puede hacerlo
- Haga clic derecho en el proyecto en Visual Studio -> reglas de generación personalizada
Haga clic en "Nuevo archivo de reglas" y rellene el siguiente campos, puedo usar este archivo de reglas para MC.EXE
<VisualStudioToolFile Name="Message Table Build Rule" Version="8.00"> <Rules> <CustomBuildRule Name="Message Table Build Rule" DisplayName="Message Table Build Rule" CommandLine="[Location]\mc.exe [Unicode] [Verbose] [Inputs]" Outputs="Message Table Build Rule" FileExtensions="*.mc" ExecutionDescription="Message Table Build Rule" > <Properties> <BooleanProperty Name="Verbose" DisplayName="Verbose mode" Description="Foo." Switch="-v" /> <BooleanProperty Name="Unicode" DisplayName="Unicode mode" Description="Bar." Switch="-u" /> <StringProperty Name="Location" DisplayName="Location" Description="Baz." Switch="[value]" DefaultValue="C:\Bin\Psdk\Bin" /> </Properties> </CustomBuildRule> </Rules> </VisualStudioToolFile>
Hans Passant casi estaba en lo cierto. Por desgracia, $ (InputPath) y $ (InputName) no están definidos en VS 2010. En su lugar, crear su archivo de mensajes:
- Haga clic derecho en su proyecto-> Add-> Nuevo elemento
- Seleccione "Texto Archivo (.txt), pero nómbrelo como un archivo ".mc" (como "messages.mc")
- Cree un archivo de recursos (por ejemplo, "resources.rc")
- Edite el archivo de recursos de modo que contenga solo una línea:
#include "messages.rc"
Ese archivo será generado por el compilador de mensajes. Ahora agregue un paso de compilación personalizado para ejecutar el compilador de mensajes:
- Haga clic derecho en messagess.mc y seleccione Propiedades.
- En el cuadro de diálogo Propiedades, configure Configuración en "Todas las configuraciones".
- En "Propiedades de configuración", haga clic en "General".
- Asegúrese de que la propiedad "Excluido de compilación" esté establecida en "No".
- Establezca la propiedad "Tipo de elemento" en "Herramienta de creación personalizada" en el menú desplegable y haga clic en el botón "Aplicar" para que aparezca la propiedad "Herramienta de creación personalizada".
- Haga clic en "General" debajo de la propiedad "Custom Build Tool".
establecer la propiedad "línea de comandos" a:
mc %(FullPath)
Establecer la propiedad Description a algo así como "Mensajes Compilar ..."
- propiedad Ajuste Sal a:
%(Filename).rc;%(Filename).h;MSG0409.bin
The file MSG00409.bin is from having the following line in messages.mc:
LanguageNames = (English=0x409:MSG00409)
Puede haber un archivo bin para cada idioma que agregue a messages.mc. Lo bueno de enumerarlos en el resultado es que se eliminará cuando se limpie el proyecto.
Lo único que no estoy seguro es establecer la propiedad "Ejecutar antes" para garantizar que se genere messages.rc antes de compilar resource.rc. No tuve que configurarlo, pero si el compilador de recursos intenta ejecutar antes del compilador de mensajes, entonces deberá establecer esta propiedad. Está deshabilitado para el archivo "messages.mc", pero se puede configurar en la propiedad "Paso de compilación personalizada" del proyecto.
Si su proyecto ya tiene un archivo .rc, simplemente puede agregar '1 11" MSG00409.bin "' a él –
¿cuál es el uso del archivo .bin si se incluye de alguna manera? –
si tiene espacios en FullPath, luego use mc "% (FullPath)" –
En el caso custom compiler
no es un requisito, sino más información sobre cómo hacer que cree archivos .rc desde MSBuild. El WDK MessageCompiler task ofrece esta integración con MSBuild
<ItemGroup>
<MessageCompile Include="a.mc">
<GenerateBaselineResource>true</GenerateBaselineResource>
<BaselineResourcePath>c:\test\</BaselineResourcePath>
</MessageCompile>
</ItemGroup>
- 1. ¿Quién sabe cómo usar mc.exe (compilador de mensajes)?
- 2. Cómo integrar el compilador de cierre de Google como un paso de compilación en Visual Studio 2010
- 3. Agregando un paso de compilación personalizado con un paquete nuget
- 4. Xcode 4 paso de compilación personalizado antes de compilar
- 5. compilación de 64 bits en microsoft visual C++ express 2010
- 6. TeamCity, pasando una ID generada en un paso de compilación a un paso de compilación posterior
- 7. ¿Es esto un Microsoft VC++ 2010 error del compilador de "auto nuevo (enum_type)"
- 8. ¿Por qué falla el compilador de VC++ 2010 al compilar código simple?
- 9. Desarrollar sin problemas en ambos VC++ 2010 y VC++ 2008 en el mismo trabajo?
- 10. Usar las bibliotecas de tiempo de ejecución de VC++ 2010 en el proyecto VC++ 2008
- 11. VC++ Error interno del compilador
- 12. Visual Studio 2012: configuración del compilador (es posible utilizar el compilador de SDK, por ejemplo, VC++ 2008-Compiler VC++ 2010-Compiler)
- 13. ¿Cuál es la diferencia entre un paso de compilación personalizado y un evento de postconstrucción?
- 14. Compilación de un Malloc personalizado
- 15. Necesita un WCF paso a paso como servicio de Windows
- 16. compilador personalizado con maven
- 17. rendimiento extraño en C++ (VC 2010)
- 18. Eclipse-CDT: ¿Cuál es la mejor manera de agregar un paso de compilación personalizado?
- 19. Cómo imprimir un mensaje personalizado en el código para el registro de compilación de Teamcity C#
- 20. problema con los "tipos movibles sólo" en VC++ 2010
- 21. Tiempo de espera en un paso de compilación de Jenkins
- 22. Visual Studio 2010 compilación de archivos .cpp como archivos .c
- 23. ¿Deshabilitar las características de C++ 0x en VC 2010?
- 24. ¿Por qué este código hace que el compilador de VC++ falle?
- 25. Detección de versiones del compilador durante el tiempo de compilación
- 26. ¿Por qué Visual Studio 2012 ejecuta un paso de compilación personalizado cuando no se ha modificado el archivo de origen?
- 27. ¿Cómo cargar un recurso binario personalizado en una biblioteca estática de VC++ como parte de un dll?
- 28. error de compilación en g ++ 4.3.4 compilador
- 29. Filtrar mensajes de error de la salida de compilación
- 30. Hacer que el paso de compilación de TeamCity FxCop cause un error de compilación si se infringe una regla
Prgress, pero quiso decir: línea de comandos = mc (InputName) .mc Salidas = $ (InputName) .rc $; $ (InputName) .h Independientemente, esto da el error: mc: error: 0x2 tratando de abrir el archivo <.mc>. – EMS
OK, estoy empezando a pensar que hay un problema mayor. Realizo un TextFile.txt, luego configuré: Línea de comando = echo "InputDir =" $ (InputDir) "InputName =" $ (InputName)> TextOut.txt Salidas = TextOut.txt TextOut.txt no contiene el $ (xxx) macro expansiones. No se ve bien – EMS
No estoy seguro de lo que está haciendo. Asegúrese de que la extensión del nombre de archivo sea .mc, no .txt –