Compiling the viewer (MSVS2005)

Warning!

These instructions will not work with newer versions of the viewer. See Microsoft Windows Builds for building the latest version of the viewer.


This page explains how to compile the Second Life Viewer on Microsoft Windows. There are several options for the build (compile) environment.

Currently, only the 32-bit binary is tested. There are attempts to produce a 64-bit Windows executable. If you did this, please write your experience on the discussion page (regardless of whether it was successful or not!)


Choosing and preparing a compiler

Linden-supported compilers

Supported compiler: Visual Studio .NET 2005 Professional

You need to setup the compiler and Microsoft Development tools as follows:

Community experimental compilers

If you don't have Visual Studio .NET 2005 Professional, you may wish to try one of the following alternatives.

⚠️ Warning: Boost support with Visual Studio 2008 is problematic as of this writing. Check VWR-9541 before continuing on this path.
Important: Make sure you install to paths without spaces in it.

Getting other development tools

You will need to install the following tools to compile the Viewer:

Verify that Cygwin, CMake, and Python are in the windows "PATH".

Downloading Source Code

Important: Make sure you install to paths without spaces in it.

You can download the Viewer source code on the source downloads page. You can also use a version control repository. If you're just starting out, it's probably best to get the latest Release version, rather than a Release Candidate, because the Release Candidates get updated quite often. But if you would rather work with the latest code, go for the version control repository "trunk". Don't forget to also download the artwork and library bundles relevant to the repository branch you're using as explained in Artwork and Library Bundles.

If you're downloading from the source downloads page, there are three packages to get: the source package, the artwork package, and the library package. In versions 1.20 and earlier, Linden packaged the library binaries in the Libs package. For 1.21 and beyond, the CMake develop.py script now downloads most of the libraries that were previously in the libs zip file. This saves developers who are tracking trunk from constantly downloading them every update and only downloads updated libraries. As of this writing, there are some pieces packages that still require downloading, so be sure to grab the library and artwork bundles from the source downloads page.

WARNING:

In other words, the easiest way to get this working is to get source, artwork, and libs from the source downloads page and unpack them all into the same directory/folder, which ideally would be a folder in (or near) the root directory with a short name like sl_1_21_6.

Installing libraries

SL Viewer depends on some third party libraries. Some of them are open source, some others are not.

Open source libraries

As of Viewer version 1.21, all open source libraries are automatically downloaded as part of the build script invoked by develop.py, unless you choose to configure a standalone build.

Proprietary libraries

Linden Lab does not provide proprietary libraries. You will need to follow the instructions here under to acquire and copy them to your source tree.

It's probably a good idea to build an empty directory tree for those files, copy the relevant proprietary files there and, once done, copy the whole to your source tree (like XCOPY OLIB SL_1_16_0_5 /S). The reason is that these steps are cumbersome and will have to be repeated for each new release (at least if you keep the source for each release in its own folder). If you do not want to do this, you can just as well copy the files directly into the linden source paths.

rem OLIBS.CMD to build a folder tree for 3rd party libraries and includes
md olibs
md olibs\linden\
md olibs\linden\libraries
md olibs\linden\libraries\include
md olibs\linden\libraries\i686-win32
md olibs\linden\libraries\i686-win32\lib_release
md olibs\linden\libraries\i686-win32\lib_debug
md olibs\linden\libraries\i686-win32\include
md olibs\linden\libraries\i686-win32\include\GL
md olibs\linden\libraries\i686-win32\include\quicktime
md olibs\linden\indra
md olibs\linden\indra\newview


Fmod

(If using cmake, copy fmodapi375win\api\lib\fmodvc.lib to linden\libraries\i686-win32\lib\release and to linden\libraries\i686-win32\lib\debug)

Note to Snowstorm users: if you are building using the Mercurial repository lindenlab/viewer-development, these steps have been simplified and cleaned up. In particular, there's no need to drop anything under linden\indra anymore, all the files are under linden\libraries like for other 3rd party libraries. The fmodvc.lib however needs to be renamed fmod.lib. The new instructions are:

Quicktime

Currently - as of version 1.21 - CMake requires Quicktime to be installed.

Note: This download requires a registration at the Apple Quicktime website and take a bit of time. You can avoid using QuickTime if you want, see this for details. Remember that your Viewer can't play in-world movies if you do so.

(If using CMake, copy QuicktimeSDK\Libraries\QTMLClient.lib to linden\libraries\i686-win32\lib\release and to linden\libraries\i686-win32\lib\debug instead)

Building the Viewer

At this point, you should be ready to use CMake to build the Visual Studio solution for the project.

NOTE: CMake is only supported for Viewer versions 1.21 and beyond.

Before you first run a build, you'll need to configure things. It is recommended that you use the develop.py script that will create a default configuration for you.

You must make sure that cmake is registered in the Windows environment or you will get strange errors from develop.py. To ensure everything is correct, right click My Computer -> Properties -> Advanced -> Environment Variables -> Inside System Variables, choose PATH (case insensitive) and click Edit. Now in the value field, go to the end of the value and add a semicolon (;), and then the folder containing the CMake binaries (example: C:\Program Files\CMake 2.8\bin). This might already have been set by the CMake installer.

From the command line, navigate to the indra folder of your source tree and run:

python develop.py

CMake will pick the most recent version of Visual Studio we support. If you want to specify the version of Visual Studio to use.

python develop.py -G VC80
python develop.py -G VC90

NOTE: The above commands will configure a "non-standalone" version of the source code tree. This means that the required third party library packages (as built by Linden Lab) will be downloaded during the CMake process.

Finding your build directory

In the CMake world, we keep source and object files separate. The develop.py script did create and populate a build directory for you. It is in one of the following locations:

Compiling

To start a build, do one of the following:

Where's the built Viewer?

On Windows, the built Viewer ought to run from VS2005.

To run outside MS VS, see Discussion tab: Talk:Microsoft_Windows_Builds#Running_viewer_outside_of_MS_VS

Build instructions for 1.20 and earlier

See Compiling older Viewers (1.20 and earlier with MSVS) if you'd like to compile a version of the Viewer older than 1.20.

What to do if it doesn't work for you

Please also see the (user contributed) instructions at User:Michelle2_Zenovka/cmake