inmensia |
Compilando Chromium en Visual Studio 2008 Express
Juan Mellado, 21 Enero, 2011 - 17:49
De vez en cuando me gusta descargarme los fuentes de algún proyecto grande de código abierto e intentar compilarlos en mi máquina. Esta vez le ha tocado el turno a Chromium, o lo que es lo mismo, el navegador Chrome de Google. Esto de los dos nombres es un poco confuso al principio, pero en realidad es bastante sencillo. Chromium es el nombre del proyecto y Chrome el nombre del navegador. Si bajamos los fuentes de Chromium y los compilamos generamos un navegador web que tiene un logotipo azul y se llama "Chromium". Lo único que hace Google es cambiarle el logotipo y el nombre por el de "Google Chrome", y hacer que se actualice automáticamente. ![]() No obstante, para acabar de complicar esto de los nombres un poco más, Chromium no es un único proyecto, sino que son dos. Uno es "Chromium", el navegador, y otro es "Chromium OS", un sistema operativo basado en web que está desarrollando Google. Afortunadamente los fuentes son distintos. En este artículo me referiré única y exclusivamente a la compilación de los fuentes del navegador. Como obtener el código: Como compilarlo en Windows: La operativa concreta a realizar varía en función del sistema operativo y el compilador. En mi caso particular, utilizando Microsoft Visual C++ 2008 Express en un PC de sobremesa con Windows 7 Ultimate 64 bits, realicé los siguientes pasos: Instalación 1) Instalar Microsoft Visual Studio C++ Express 2008 SP1 2) Instalar el parche KB967631 3) Instalar el parche KB960075 4) Instalar el parche KB957912 5) Instalar Microsoft Windows SDK for Windows 7 en un directorio <SDK> 6) Instalar Microsoft Windows Driver Kit Version 7.1.0 en un directorio <DDK> 7) Instalar Microsot DirectX SDK 8) Descargar depot_tools y descomprimir el .zip en un directorio <depot_tools> 9) Descargar chromium_tarball y descomprimir el .tgz en un directorio <sources> Configuración 10) Añadir el directorio <depot_tools> al PATH del sistema 11) Asociar el SDK con Visual Studio: 12) Ejecutar por primera vez las depot tools para actualizarlas: 13) Editar el fichero <sources>\.glclient y añadir la url de una rama probada de los fuentes: 14) Actualizar los fuentes: 15) Crear la solución y los proyectos para Visual Studio 2008 Express: Compilación 16) Aplicar parche en el fichero "atlstdthunk.h" del DDK: 17) Comentar las siguientes líneas en el fichero "atldef.h" del DDK: 18) Añadir las siguientes rutas a la lista de directorios de includes de Visual Studio: 19) Abrir solución de Visual Studio (ignorar mensaje de advertencia sobre properties): 20) Eliminar la directiva de compilación "/WX Treat Warnings As Errors" en los proyectos: 21) Configurar el proyecto "chrome" como inicial 22) Lanzar el build sobre la solución Y eso es básicamente todo, ¡que no es poco!. Ahora sólo queda tener la paciencia suficiente para dar tiempo a que termine la compilación y el correspondiente linkado, y rezar para que no empiece a lanzar errores como un descosido por la consola. En mi PC demora media hora en generar el ejecutable, lo que es un tiempo bastante bueno, aunque parezca lo contrario. He procurado poner los pasos en el orden que debería haber seguido desde el principio, pero en realidad fue toda una sesión de prueba y error. De hecho, he escrito este post para que me sirva como recordatorio más que como una guía de compilación. En general está todo bastante automatizado gracias a la herramientas depot de Google. Lo único un poco más enrevesado son las dependencias con la Active Template Library (ATL), motivo por el que es necesario instalar el DDK, ya que la versión Express de Visual Studio no la incluye. Y aún así, hay que aplicar unos parches u otros según la versión para conseguir que compile. Los proyectos como estos escritos en C++ pueden llegar a resultar un tanto complicados de compilar, sobre todo cuando son multiplataforma. A veces es difícil configurar los proyectos y generar un ejecutable desde un IDE. Ya sea porque no se consigue resolver una dependencia con una librería externa, o simplemente porque se está utilizando una versión distinta de un mismo compilador. Con los proyectos Java por el contrario lo normal es bajárselos sólo para ver las dependencias y descubrir alguna joya que otra por ahí escondida en forma de librería lista para usar dentro del directorio libs. Y si además se distribuyen con Maven (un gestor de dependencias, entre otras cosas), pues mejor que mejor. Actualización (13/01/2012): Compilando Chrome usando Visual C++ 2010 Express ¿No encontró lo que buscaba?Utilice el buscador para encontrar más páginas en esta web o en toda Internet. |