Añadir una herramienta personalizada para las herramientas principales para eliminar BOM UTF-8 antes de compilación

StackOverflow https://stackoverflow.com/questions/3127174

Pregunta

Mi pregunta es en el contexto de Code :: Blocks y su versión modificada de MinGW, y Notepad ++.

Quiero ser capaz de incluir literales Unicode en mi fuente, y que pueda, tanto tiempo como yo uso UTF-8 y no utilizan una lista de materiales.

Esto funciona bien, hasta cierto punto, pero las listas de materiales a cabo (mal juego de palabras) cada vez que vuelve a abrir el archivo; que (como es lógico) tiene esta enervante efecto secundario de mostrar el Unicode en su forma ANSI. :(

Los muy útil ya la vez muy molesto tres bytes tiene que estar allí, y luego tienen que ir! (En tiempo de compilación).

Suena bastante fácil, sólo puede procesar previamente el archivo fuente (s), y desechar los tres primeros bytes (si son un BOM UTF-8) ...

Estoy seguro que va a ser el procesador (por extracción manual) cada vez que la compilación, por lo que incluso he recurrido al uso de lista de materiales a menos archivos # include para estos literales, pero esto es problemático desde varios puntos de vista, no se el menor de ellos es que es un dolor en el proverbial, y no puedo "ver" a ellos! ..without una gran cantidad de malabares.

¿Hay alguna manera de que pueda aprovechar la cadena de herramientas con un preprocesador de encargo? ... o si me he perdido un poco de solución obvia, yo aprecio mucho oír hablar de ella.

¿Fue útil?

Solución 2

He fossicked en torno a un poco más, y he trabajado a cabo una solución tentativa. No estoy completamente contento con él, ya que implica la modificación de la fuente, mientras que en realidad estaba buscando una solución entubada, pero parece que g ++. Exe sólo acepta argumentos de línea de comandos (por favor, corríjanme si me equivoco).

Mi "solución" es un poco áspera y listo, pero funciona, y es sin duda mejor (para mí) que cualquier otra solución viable que he encontrado (que no es!) Requiere preste la debida atención a su editor de "archivo ha sido modificado externamente" cuadro de mensaje (si el archivo está siendo editado), pero de hecho, la lista de materiales se encuentra todavía en el editor, por lo que es algo así como un punto discutible.

Es un simple corte de línea de comandos. Yo preferiría una opción más integrado, pero aquí es este (y funciona):

Los bloques de código, ir a: Ajustes -> compilador y depurador -> Otros ajustes ->    [Opciones avanzadas] -> Línea de comandos de macro:

Hacer estas modificaciones a la línea de comandos. Todos ellos deben estar en una sola línea (por supuesto), pero para mayor claridad los he separados a cabo:

cmd /c DropTheBOM.exe $file
& $compiler $options $includes -c $file -o $object // (use your compiler cmdline)
& MakeTheBOM.exe $file
// Write your own utils, or try here: http://code.google.com/p/utf-bom-utils/

PS: # incluye archivos no se stripiped de su lista de materiales (si lo tiene) ..      Un modificador / n arg sencilla y lista de materiales para la rutina que #Includes estos archivos resolvería este problema, sencillamente ... (pero es sólo un problema de Windows ... tal vez es por eso que no ha sido atendido por ... o ¿verdad? ¿alguien sabe?

Otros consejos

Es posible que desee considerar la externalización de todos los literales de cadena en un archivo separado de todos modos y utilizando una función loadLit() (o similar) para obtener en tiempo de ejecución.

Esto le permitirá tener un solo archivo (con una lista de materiales) que contiene todos los literales de cadena y le hará la vida mucho más fácil si alguna vez tiene la internacionalización de su aplicación.

Lo hacemos con nuestras cosas pero tenga en cuenta nuestros programas de clase 1 tienen que ser i18n'ed durante 21 lugares diferentes, así que ahorrar mucho trabajo por hacerlo de esta manera :-) Su kilometraje puede variar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top