2012-07-12 18 views
13

He añadido una acumulación paso encargo a mis archivos de proyecto de Visual Studio que genera la Google protobuf .h/archivos .cc de la entrada .proto archivos. Pero me he estado preguntando si es posible iniciar una compilación solo si el contenido de los archivos proto ha cambiado.Integrar archivos de Google Protocol Buffers .proto a Visual C++ 2010

¿Hay alguna manera de decirle exactamente a VisualStudio desde un paso de compilación personalizado? ¿Cuál es la forma óptima de integrar archivos proto en una solución visual de construcción de estudio?

Por el momento, en cada compilación se actualiza el archivo .proto, que también actualiza la marca de tiempo de los archivos de salida .h/.cc ... que luego emite una recompilación de todo lo dependiente de eso. ¿Hay una mejor manera de evitarlo, sin dejar de construirlos directamente desde Visual Studio?

+0

¿Ha resuelto su problema? Es un poco extraño preguntar y votar una pregunta sin que haya ninguna discusión. –

Respuesta

3

Tal vez this ayuda. Especialmente mira el puesto de Igor Zavoychinskiy:

solución de este problema desagradable es realmente simple: en las secciones salidas debe especificar la ruta (s) completo. Esto no se establece explícitamente en ningún lugar pero sin este corrector simplemente no puede encontrar los archivos y, por lo tanto, supone que no existen. Por ejemplo, para compilar protobuffers sección salidas será así:

$ (InputDir) \ .pb.cc $ (InputName); $ (InputDir) \ $ (InputName) .pb.h

y (? tal vez) kmote00:

... en pocas palabras: sólo tenía que asegurarse de que mi entrada "Salidas" exactamente coincidió con el valor por defecto en la propiedad (definida por el usuario) "OutputFile". (Afortunadamente esto también evitado la necesidad de una construcción de dos pasos, que era otra molestia que había puesto previamente con.)

+0

¡Esto ayudó! Gracias @Jakob S. Había usado rutas relativas para la sección de resultados ... y por alguna razón el $ (InputDir) \ $ (InputName) no está definido ... pero aparte de eso. ¡Funciona con caminos absolutos! – Hhut

+0

Bien ... no sabía que tenía esa opción. Lo encontré. ¡Hecho! :) Gracias – Hhut

14

Siga estas instrucciones detalladas para especificar Custom Build Tool.

Teniendo en cuenta su archivo proto reside junto con los archivos .h/Cpp en configuración estándar del proyecto, aquí son valores que deben insertarse en la generación personalizada de herramientas:

Command Line: 
path\to\protoc --proto_path=$(ProjectDir) --cpp_out=$(ProjectDir) %(FullPath) 
Outputs: 
$(ProjectDir)%(Filename).pb.h;$(ProjectDir)%(Filename).pb.cc 

Tenga en cuenta el uso de item metadata macro s, que sustituyó a algunos de macros obsoletas (como $ (InputDir) y $ (InputName)).

Ahora el compilador de búferes de protocolo se ejecutará solo cuando el archivo de entrada (es decir,% (FullPath)) sea más nuevo que "Salidas".

+0

A mi protoc.exe no le gustó '\' así que tuve que copiar al directorio del archivo .proto y usar '--cpp_out =. /% (FileName)% (Extension)' – mheyman

Cuestiones relacionadas