- en
- es
Una guía paso por paso para compilar OpenTTD en Visual Studio 2012
Antes de empezar
Asumo que ya tienes Microsoft Visual Studio instalado y funcionando.
Archivos requeridos
- Microsoft® Windows® SDK
- openttd-useful-X.X-win.zip -> Archivos fuentes necesarios para compilar.
- DMusic_for_OpenTTD.zip -> Viejos archivos include de DirectMusic.
- TortoiseSVN Un programa de Windows para conseguir y actualizar el código de los repositorios SVN.
Esta guía ha sido comprobada en Windows 8 64 bits, debería funcionar en otras versiones de Windows también, si encuentras algún error adicional por favor háznoslo saber en el foro.
Paso 1 - Preparando los archivos
1.1 Crea tu carpeta de Trabajo
principal (por ejemplo C:\OpenTTD
)
1.2 Crea una subcarpeta llamada trunk
dentro de la carpeta que creaste antes.
1.3 Seleccciona la carpeta trunk
y haz un check-out con TortoiseSVN usando svn://svn.openttd.org/trunk en el campo URL (si necesitas ayuda échale un vistazo a svn checkout)
1.4 Extrae el archivo openttd-useful-X.X-win.zip
descargado previamente dentro de nuestra carpeta de Trabajo
y una carpeta llamada OpenTTD essentials
se creará.
1.5 Extrae el archivo DMusic_for_OpenTTD.zip
descargado previamente dentro de la carpeta OpenTTD essentials
.
Paso 2 - Configurar Visual Studio
2.1 Cierra Visual Studio si lo tienes abierto e instala Microsoft Windows SDK
.
2.2 Abre Microsoft Visual Studio y ve a Archivo -> Abrir Proyecto
.
2.3 Selecciona el archivo (CarpetaDeTrabajo)\trunk\projects\openttd_vs100.sln
.
2.4 Aparecerá una ventana preguntándote si quieres actualizar los ajustes del compilador, pulsa el botón Actualizar
.
2.5 Ve a Compilar -> Administrador de Configuración
y selecciona Configuración: Release
.
2.6 Selecciona openttd
en el Explorador de Soluciones
, haz click con el botón derecho del ratón y selecciona Propiedades
.
2.7 Selecciona Configuración: Release
en la parte superior de la ventana.
Puedes dejar ambos ajustes tal y como vienen por defecto en
Debug
si quieres pero tendrás que repetir estos pasos cuando lo cambies de nuevo a Release.
2.8 Selecciona Propiedades de configuración -> Directorios de VC++
.
2.9 Selecciona Directorio de archivos de inclusión
y añade (CarpetaDeTrabajo)\OpenTTD essentials\shared\include;
a la lista.
No olvides poner el ; al final, es importante.
2.10 Selecciona Directorio de archivos de bibliotecas
y añade (CarpetaDeTrabajo)\OpenTTD essentials\win32\library;
a la lista. De nuevo
No olvides poner el ; al final, es importante,
Cambia win32 por win64 si estás compilando una build de 64 bits.
Ahora puedes intentar generar la solución.
Tu archivo final deberá estar en (CarpetaDeTrabajo)\trunk\objs\Win32\Release\openttd.exe
Solución de Errores
Arreglar Error C1083: No se puede abrir el archivo (de código fuente/incluir) 'X' No such file or directory
Esto normalmente ocurre cuando intentas compilar solo el proyecto openttd
, debes compilar la solución completa porque algunos archivos necesarios son creados "al vuelo" por scripts
Solución: Selecciona Solución 'openttd_vs100'
en Explorador de Soluciones
, haz click con el botón derecho del ratón y selecciona Compilar Solución
.
Arreglar Error C1189: "The C++ Standard Library forbids macroizing keywords. Enable warning C4005 to find the forbidden macro[...]"
Abre la ventana de propiedades del proyecto. (Ver paso 2.6)
Selecciona C/C++ -> Preprocesador
.
Selecciona Definiciones de preprocesador
y añade
_XKEYCHECK_H;
a la lista. No olvides poner el ; al final, es importante.
Arreglar Error LNK2026: "Módulo no seguro de una imagen SAFESEH[...]"
Abre la ventana de propiedades del proyecto. (Ver paso 2.6)
Selecciona Vinculador
.
Selecciona Línea de comandos
.
Escribe (o c&p) en la caja de texto Opciones adicionales
:
/SAFESEH:NO
Más información: [1]
Arreglar Warning C4005: "'FACILITY_DIRECTMUSIC' : redefinición de macro"
Abre el árbol openttd
en el Explorador de Soluciones
, abre Dependencias Externas
y selecciona dmerror.h
Cambia al principio del archivo (normalmente en la línea 12) donde está esto:
#define FACILITY_DIRECTMUSIC 0x878 /* Shared with DirectSound */
a
#ifndef FACILITY_DIRECTMUSIC #define FACILITY_DIRECTMUSIC 0x878 /* Shared with DirectSound */ #endif