mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-08 20:22:22 +02:00
Update Windows build instructions
This commit is contained in:
parent
98b4d6f697
commit
32c97bb6a2
1 changed files with 125 additions and 33 deletions
158
BUILD.md
158
BUILD.md
|
@ -4,7 +4,7 @@ Dependencies
|
|||
* [Qt](http://qt-project.org/downloads) ~> 5.2.0
|
||||
* [zLib](http://www.zlib.net/) ~> 1.2.8
|
||||
* [glm](http://glm.g-truc.net/0.9.5/index.html) ~> 0.9.5.2
|
||||
* [qxmpp](https://code.google.com/p/qxmpp/) ~> 0.7.6
|
||||
* [qxmpp](https://github.com/qxmpp-project/qxmpp/) ~> 0.7.6
|
||||
* [GnuTLS](http://gnutls.org/download.html) ~> 3.2.12
|
||||
* IMPORTANT: GnuTLS 3.2.12 is critical to avoid a security vulnerability.
|
||||
|
||||
|
@ -83,17 +83,41 @@ If the build completes successfully, you will have built targets for all compone
|
|||
|
||||
Windows
|
||||
===
|
||||
Currently building on Windows has only been tested on Windows SDK 7.1 with Visual Studio C++ 2010 Express.
|
||||
####Visual Studio
|
||||
|
||||
Currently building on Windows has been tested using the following compilers:
|
||||
* Visual Studio C++ 2010 Express
|
||||
* Visual Studio 2013
|
||||
|
||||
(If anyone can test using Visual Studio 2013 Express then please update this document)
|
||||
|
||||
#####Windows SDK 7.1
|
||||
|
||||
Whichever version of Visual Studio you use, first install [Microsoft Windows SDK for Windows 7 and .NET Framework 4](http://www.microsoft.com/en-us/download/details.aspx?id=8279).
|
||||
|
||||
#####Visual Studio C++ 2010 Express
|
||||
|
||||
Visual Studio C++ 2010 Express can be downloaded [here](http://www.visualstudio.com/en-us/downloads#d-2010-express).
|
||||
|
||||
The following patches/service packs are also required:
|
||||
* [Windows SDK 7.1/.NET 4 Framework](http://www.microsoft.com/en-us/download/details.aspx?id=8279)
|
||||
* [VS2010 SP1](http://www.microsoft.com/en-us/download/details.aspx?id=23691)
|
||||
* [VS2010 SP1 Compiler Update](http://www.microsoft.com/en-us/download/details.aspx?id=4422)
|
||||
|
||||
Some of the build instructions will ask you to start a Visual Studio Command Prompt. You should have a shortcut in your Start menu called "Open Visual Studio Command Prompt (2010)" which will do so.
|
||||
|
||||
#####Visual Studio 2013
|
||||
|
||||
This product must be purchased separately.
|
||||
|
||||
Visual Studio 2013 doesn't have a shortcut to start a Visual Studio Command Prompt. Instead, start a regular command prompt and then run:
|
||||
|
||||
"%VS120COMNTOOLS%\vsvars32.bat"
|
||||
|
||||
####Qt
|
||||
You can use the online installer, or the offline installer. If you use the offline installer, be sure to select the "OpenGL" version.
|
||||
You can use the online installer or the offline installer. If you use the offline installer, be sure to select the "OpenGL" version.
|
||||
|
||||
NOTE: Qt does not support 64-bit builds on Windows 7, so you must use the 32-bit version of libraries for interface.exe to run. The 32-bit version of the static library is the one linked by our CMake find modules.
|
||||
|
||||
* Download the online installer [here](http://qt-project.org/downloads)
|
||||
* When it asks you to select components, ONLY select the following:
|
||||
* Qt > Qt 5.2.0 > **msvc2010 32-bit OpenGL**
|
||||
|
@ -101,67 +125,135 @@ You can use the online installer, or the offline installer. If you use the offli
|
|||
* Download the offline installer [here](http://download.qt-project.org/official_releases/qt/5.2/5.2.0/qt-windows-opensource-5.2.0-msvc2010_opengl-x86-offline.exe)
|
||||
|
||||
Once Qt is installed, you need to manually configure the following:
|
||||
* Make sure the Qt runtime DLLs are loadable (You could add the Qt\5.2.0\msvc2010_opengl\bin\ directory to your path.) - You must do this before you attempt to build because some tools for the build depend on Qt.
|
||||
* Set the QT_CMAKE_PREFIX_PATH environment variable to your Qt\5.2.0\msvc2010_opengl directory
|
||||
|
||||
####zLib
|
||||
NOTE: zLib should configure itself correctly on install. However, sometimes zLib doesn't properly detect system components and fails to configure itself correctly. When it fails, it will not correctly set the #if HAVE_UNISTD_H at line 287 of zconf.h to #if 0... if it fails, you're build will have errors in the voxels target. You can correct this by setting the #if to 0 instead of 1, since Windows does not have unistd.h.
|
||||
* Make sure the Qt runtime DLLs are loadable. You must do this before you attempt to build because some tools for the build depend on Qt. E.g., add to the PATH: `Qt\5.2.0\msvc2010_opengl\bin\`.
|
||||
* Set the QT_CMAKE_PREFIX_PATH environment variable to your `Qt\5.2.0\msvc2010_opengl` directory.
|
||||
|
||||
####External Libraries
|
||||
|
||||
CMake will need to know where the headers and libraries for required external dependencies are.
|
||||
|
||||
If you installed zLib using the installer, the Cmake find module for zLib should locate it on your system.
|
||||
|
||||
The recommended route for CMake to find the other external dependencies is to place all of the dependencies in one folder and set one ENV variable - HIFI_LIB_DIR. That ENV variable should point to a directory with the following structure:
|
||||
The recommended route for CMake to find the external dependencies is to place all of the dependencies in one folder and set one ENV variable - HIFI_LIB_DIR. That ENV variable should point to a directory with the following structure:
|
||||
|
||||
root_lib_dir
|
||||
-> glm
|
||||
-> glm
|
||||
-> glm.hpp
|
||||
-> freeglut
|
||||
-> bin
|
||||
-> include
|
||||
-> lib
|
||||
-> glew
|
||||
-> bin
|
||||
-> include
|
||||
-> lib
|
||||
-> freeglut
|
||||
-> glm
|
||||
-> glm
|
||||
-> glm.hpp
|
||||
-> gnutls
|
||||
-> bin
|
||||
-> include
|
||||
-> lib
|
||||
-> qxmpp
|
||||
-> include
|
||||
-> lib
|
||||
-> gnutls
|
||||
-> bin
|
||||
-> include
|
||||
-> lib
|
||||
-> zlib
|
||||
-> include
|
||||
-> lib
|
||||
-> test
|
||||
|
||||
For many of the external libraries where precompiled binaries are readily available you should be able to simply copy the extracted folder that you get from the download links provided at the top of the guide. Otherwise you may need to build from source and install the built product to this directory. The `root_lib_dir` in the above example can be wherever you choose on your system - as long as the environment variable HIFI_LIB_DIR is set to it.
|
||||
For many of the external libraries where precompiled binaries are readily available you should be able to simply copy the extracted folder that you get from the download links provided at the top of the guide. Otherwise you may need to build from source and install the built product to this directory. The `root_lib_dir` in the above example can be wherever you choose on your system - as long as the environment variable HIFI_LIB_DIR is set to it. From here on, whenever you see %HIFI_LIB_DIR% you should substitute the directory that you chose.
|
||||
|
||||
*NOTE: Be careful with glm. For the folder other libraries would normally call 'include', the folder containing the headers, glm opts to use 'glm'. You will have a glm folder nested inside the top-level glm folder.*
|
||||
As with the Qt libraries, you will need to make sure that directories containing DLL'S are in your path. Where possible, you can use static builds of the external dependencies to avoid this requirement.
|
||||
|
||||
*NOTE: Qt does not support 64-bit builds on Windows 7, so you must use the 32-bit version of libraries for interface.exe to run. The 32-bit version of the static library is the one linked by our CMake find modules*
|
||||
#### OpenSSL
|
||||
|
||||
##### DLLs
|
||||
As with the Qt libraries, you will need to make sure the directories containing dynamically-linked libraries is in your path.
|
||||
QT will use OpenSSL if it's available, but it doesn't install it, so you must install it separately.
|
||||
|
||||
For example, for a dynamically linked build of freeglut, the directory to add to your path in which the DLL is found is `FREEGLUT_DIR/bin`. Where possible, you can use static builds of the external dependencies to avoid this requirement.
|
||||
Your system may already have several versions of the OpenSSL DLL's (ssleay32.dll, libeay32.dll) lying around, but they may be the wrong version. If these DLL's are in the PATH then QT will try to use them, and if they're the wrong version then you will see the following errors in the console:
|
||||
|
||||
QSslSocket: cannot resolve TLSv1_1_client_method
|
||||
QSslSocket: cannot resolve TLSv1_2_client_method
|
||||
QSslSocket: cannot resolve TLSv1_1_server_method
|
||||
QSslSocket: cannot resolve TLSv1_2_server_method
|
||||
QSslSocket: cannot resolve SSL_select_next_proto
|
||||
QSslSocket: cannot resolve SSL_CTX_set_next_proto_select_cb
|
||||
QSslSocket: cannot resolve SSL_get0_next_proto_negotiated
|
||||
|
||||
To prevent these problems, install OpenSSL yourself. Download the following binary packages [from this website](http://slproweb.com/products/Win32OpenSSL.html):
|
||||
* Visual C++ 2008 Redistributables
|
||||
* Win32 OpenSSL v1.0.1h
|
||||
|
||||
Install OpenSSL into the Windows system directory, to make sure that QT uses the version that you've just installed, and not some other version.
|
||||
|
||||
#### Zlib
|
||||
|
||||
Download the compiled DLL from the [zlib website](http://www.zlib.net/). Extract to %HIFI_LIB_DIR%\zlib.
|
||||
|
||||
Add the following environment variables (remember to substitute your own directory for %HIFI_LIB_DIR%):
|
||||
|
||||
ZLIB_LIBRARY=%HIFI_LIB_DIR%\zlib\lib\zdll.lib
|
||||
ZLIB_INCLUDE_DIR=%HIFI_LIB_DIR%\zlib\include
|
||||
|
||||
Add to the PATH: `%HIFI_LIB_DIR%\zlib`
|
||||
|
||||
Important! This should be added at the beginning of the path, not the end. That's because your
|
||||
system likely has many copies of zlib1.dll, and you want High Fidelity to use the correct version. If High Fidelity picks up the wrong zlib1.dll then it might be unable to use it, and that would cause it to fail to start, showing only the cryptic error "The application was unable to start correctly: 0xc0000022".
|
||||
|
||||
#### freeglut
|
||||
|
||||
Download the binary package: `freeglut-MSVC-2.8.1-1.mp.zip`. Extract to %HIFI_LIB_DIR%\freeglut.
|
||||
|
||||
Add to the PATH: `%HIFI_LIB_DIR%\freeglut\bin`
|
||||
|
||||
#### GLEW
|
||||
|
||||
Download the binary package: `glew-1.10.0-win32.zip`. Extract to %HIFI_LIB_DIR%\glew (you'll need to rename the default directory name).
|
||||
|
||||
Add to the PATH: `%HIFI_LIB_DIR%\glew\bin\Release\Win32`
|
||||
|
||||
#### GLM
|
||||
|
||||
This package contains only headers, so there's nothing to add to the PATH.
|
||||
|
||||
Be careful with glm. For the folder other libraries would normally call 'include', the folder containing the headers, glm opts to use 'glm'. You will have a glm folder nested inside the top-level glm folder.
|
||||
|
||||
#### GnuTLS
|
||||
|
||||
#####GnuTLS
|
||||
You can get a precompiled version of GnuTLS for Windows [here](http://gnutls.org/download.html).
|
||||
|
||||
To use GnuTLS with Visual Studio, you will need to create `libgnutls-28.lib`, the import library for Visual Studio projects. this is done using the `lib` command in the `bin` folder of your GnuTLS download. Run the following in a Visual Studio Command Prompt (found in the tools menu of Visual Studio).
|
||||
To use GnuTLS with Visual Studio, you will need to create `libgnutls-28.lib`, the import library for Visual Studio projects. This is done using the `lib` command in the `bin` folder of your GnuTLS download. Start a Visual Studio Command Prompt, and then run:
|
||||
|
||||
$GNUTLS_DIR\bin> lib /def:libgnutls-28.def
|
||||
cd %HIFI_LIB_DIR%\gnutls\bin
|
||||
lib /def:libgnutls-28.def
|
||||
copy libgnutls-28.lib ..\lib
|
||||
|
||||
This will create `libgnutls-28.lib` in the `bin` folder. Copy that file to the `lib` sub-folder of your GnuTLS folder, and the Cmake FindGnuTLS module in this repo will find it during the Cmake run.
|
||||
The Cmake FindGnuTLS module will now find libgnutls-28.lib during the Cmake run.
|
||||
|
||||
####Building in Visual Studio
|
||||
Add to the PATH: `%HIFI_LIB_DIR%\gnutls\bin`
|
||||
|
||||
#### qxmpp
|
||||
|
||||
Download a source-code release from the [qxmpp GitHub page](https://github.com/qxmpp-project/qxmpp/releases).
|
||||
|
||||
Start a Visual Studio Command Prompt.
|
||||
|
||||
mkdir %HIFI_LIB_DIR%\build
|
||||
tar xfz qxmpp-0.7.6.tar.gz -C %HIFI_LIB_DIR%\build
|
||||
cd %HIFI_LIB_DIR%\build\qxmpp-0.7.6
|
||||
qmake PREFIX=%HIFI_LIB_DIR%\qxmpp # This creates "Makefile"
|
||||
nmake
|
||||
nmake install
|
||||
|
||||
Add to the PATH: `%HIFI_LIB_DIR%\qxmpp\lib`
|
||||
|
||||
#### Build High Fidelity using Visual Studio
|
||||
Follow the same build steps from the CMake section, but pass a different generator to CMake.
|
||||
|
||||
cmake .. -G "Visual Studio 10"
|
||||
cmake .. -DZLIB_LIBRARY=%ZLIB_LIBRARY% -DZLIB_INCLUDE_DIR=%ZLIB_INCLUDE_DIR% -G "Visual Studio 10"
|
||||
|
||||
If you're using Visual Studio 2013 then pass "Visual Studio 12" instead of "Visual Studio 10" (yes, 12, not 13).
|
||||
|
||||
Open %HIFI_DIR%\build\hifi.sln and compile.
|
||||
|
||||
####Running Interface
|
||||
If you need to debug Interface, you can run interface from within Visual Studio (see the section below). You can also run Interface by launching it from command line or File Explorer from $YOUR_HIFI_PATH\build\interface\Debug\interface.exe
|
||||
If you need to debug Interface, you can run interface from within Visual Studio (see the section below). You can also run Interface by launching it from command line or File Explorer from %HIFI_DIR%\build\interface\Debug\interface.exe
|
||||
|
||||
####Debugging Interface
|
||||
* In the Solution Explorer, right click interface and click Set as StartUp Project
|
||||
|
|
Loading…
Reference in a new issue