Imprudence:Compiling/1.4/Windows
From Kokua Wiki
Windows compiling instructions for 1.4.x. Please correct any errors or missing information.
Visual Studio 2005 is the default compiler for Imprudence. Feel free to post about issues using it, the Express Editions, 2008, or 2010 in the development forums. Also, remember: Visual Studio is NOT the same thing as Visual C++ Express Edition (also called VCExpress)!
Necessary software
- Visual Studio 2005 (VS2008 will work for everything but plugins; 2010 will currently fail--patches welcome to fix that up). You can download Visual C++ Express 2005 and SP1 (SP1 for Vista) or Visual C++ Express 2008 for free.
- If you have a student email, you can also download Visual Studio 2005, 2008, or 2010 Professional for free from Microsoft's dreamspark website.
- Visual Studio Redstributables (you need these only for Express Editions or if you don't have that version of Visual Studio installed). They can be found in the indra/newview/installers/windows/ folder. See the "application configuration is incorrect" troubleshooting section for more info.
- CMake 2.6.2 or greater. Add CMake to your system PATH.
- ActivePython 2.5 or 2.6.
- Cygwin. Make sure patchutils, flex, and bison are included under "devel". DON'T add cygwin to your PATH.
- Microsoft DirectX SDK November 2008. Install x86 Headers and Libs.
- Windows SDK 6.1. The only required portion is Developer Tools > Windows x86 Headers and Libraries. On Windows 7 64 bit, you'll also need the 32 bit development tools (otherwise rc.exe isn't found).
- Quicktime SDK 7.3 or greater. Must be installed to your Program Files directory on C:\.
Optional
- Git. Only necessary if you're interested in using the latest source or contributing. See the git primer page for installation instructions.
Downloading Source Code
- For Stable builds (aka released versions), check the Downloads page for source archives.
- For Experimental builds, see our GitHub repo.
- Source can be downloaded manually as an archive, or if you know how, by using Git.
Generating Build Files
Once the source is unpacked, the next step is to run the command to generate the project files. This will also automatically do a few things:
- Automatically download a bunch of software libraries and unpack them in the linden/libraries/ folder to be used later when compiling. This will take a while, depending on the speed of your internet connection, but the good news is it only has to download once, not every time you compile.
- Create project files to use for compiling with Visual Studio. CMake creates a separate directory for compiling and storing the project files. The exact directory name depends on your Visual Studio version.
Open up a cmd window (Start > Run > "cmd") and type:
cd C:\imprudence\linden\indra python develop.py
(Note: you'll never use the --standalone flag on Windows.)
If you have multiple versions of Visual Studio installed, use the -G flag to specify a version to generate a solution for, e.g.: python develop.py -G VC80 where:
- VC71 = VS2003
- VC80 = VS2005
- VC90 = VS2008
Or, browse to linden/indra/ directory and double-click on "develop.py.bat" to run it with ActivePython.
(Note: develop.py will always find a Visual Studio version before the VC++ Express Edition.)
Project files are generated in:
-
linden/indra/build-vc*(e.g.linden/indra/build-vc80)
Compiling Imprudence
Now for the actual compiling! Compiling for the first time can take anywhere from 15 minutes to a couple of hours, so now'd be a good time to start thinking about that dirty laundry you've been puttying off doing (yes, we know about it!).
Visual Studio 2005
- After develop.py has completed, either browse to your newly created
linden\indra\build-vc80directory and double click on Imprudence.sln, or open the solution file directly from Visual Studio.
- The default StartUp Project should be "imprudence-bin" (you can tell because it's bold). If not, make it so by right clicking "imprudence-bin" and selecting "Set As StartUp Project".
- There will be three build options:
Release,Debug, andRelWithDebInfo. We recommend buildingRelease.
- Go grab some lunch, a full build takes a while.
- Your final compiled .exe and dlls are in
\linden\indra\build-vc80\newview\release. You can run imprudence-bin.exe from within Visual Studio.
- If you want to run Imprudence outside of the debugger, run develop.py with
python develop.py configure -DPACKAGE:BOOL=ON. A "package" project will be added to your solution, which will copy all the files needed to run Imprudence to a new "packaged" directory inside\linden\indra\build-vc80\newview\release.
- Note: if you make any changes to the files in
\linden\indra\newview, such as editing an xml file, you'll need to build the package project again to copy them over.
- Note: if you make any changes to the files in
Visual Studio 2008
- Use
python develop.py -G VC90to specify Visual Studio 2008. - Follow the Visual Studio 2005 steps above.
Visual Studio 2010
Currently under development! See Nicky Perian's repo on GitHub.
For build instructions; See Nicky Perian's User Page
Visual C++ 2005/2008 Express Edition
- Configure VC++ Express by going to Tools > Options > Projects and Solutions > VC++ Directories and adding the following paths to the top of the matching list (upper right dropdown). The ones listed here are default installations; use your local versions:
- Executable files:
-
C:\Program Files\CMake 2.6\bin -
C:\Python26 -
C:\cygwin\bin(add this to the bottom of the list!)
-
- Include files:
-
C:\Program Files\Microsoft DirectX SDK (November 2008)\Include -
C:\Program Files\Microsoft SDKs\Windows\v6.1\Include
-
- Library files:
-
C:\Program Files\Microsoft DirectX SDK (November 2008)\Lib\x86 -
C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib
-
- Executable files:
- Imprudence's version of develop.py should find your Express installation, but if not, you need to specify the version with
python develop.py -G VC80(orpython develop.py -G VC90for 2008). You made need to use the VS prompt instead of the regular command prompt to run develop.py. - CMake will die when it gets to VStool. Don't worry, this is expected due to differences between the regular and Express version. your solution file has already been created.
- Open Imprudence.sln in the newly created directory and right click on imprudence-bin. Select "Set As Startup Project."
- Right click imprudence-bin again and select properties. Under Configuration Properties > Debugging, set the Working Directory to "..\..\newview"
- Follow the Visual Studio 2005 steps above.
Generating The ChangeLog
The ChangeLog project requires git installed to run. If you don't have git already installed and added to your system PATH, see here for installing it, then add C:\Program Files\Git\bin (or whatever the path is to your git.exe application) to the bottom of Tools > Options > Projects and Solutions > VC++ Directories > Executable Files.
Compiling Windows Libraries
OPTIONAL! If you are feeling brave, you can compile the viewer's libraries for yourself. See User:McCabe/Win_build for Imprudence-specific library compile instructions (currently out of date). Any library not yet there can be found here.
Troubleshooting Errors
This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem
You don't have a high enough version of the VC++ CRT installed for a specific library/plugin/executable to be run. Compatible versions are included in two places:
- In the source: indra/newview/installers/windows/vcredist_x86_*.exe
- Package/installed folder:redist/vcredist_x86_*.exe
Note that the Windows installer checks for the CRT and updates it if needed, but in rare cases the install might fail or become corrupt and you'll have to use the CRT's Repair option. If repairing fails, uninstalling/reinstalling the CRT usually works (this can be done from the control panel).
CMake 2.8.x errors on Windows Vista/7
Be sure you're running Visual Studio as an Administrator. The best way to fix is this to right click devenv.exe, select Properties, Compatibility tab, and check "Run this program as an administrator".
Boost errors using Visual C++ Express
There's a chance you might see something like:
Convert parameter 1 from 'void (__cdecl *) (const LLSD &)' const in 'boost:: slot <SlotFunction> &' not possible
You'll need to cast whatever's in the boost function as (boost::function<void (const LLSD &)>). See this forum thread for more info.
Error PRJ0019 when building
See this thread for an explanation and workaround.
Error: the command 'cmake' was not found
Reinstall CMake and add it to your system PATH.
AttributeError: 'WindowsSetup' object has no attribute '__name__'
develop.py isn't finding your version of Visual Studio. You need to specify it by using the -G command flag, e.g.:
python develop.py -G VC80 (or -G VC90 for 2008).
LINK : fatal error LNK1104: cannot open file 'user32.lib'
More than likely, you're using the VC++ Express Edition and it's trying to link using the cygwin version of link.exe rather than VC++'s. Make sure C:\cygwin\bin isn't in your PATH or your VC++ Executable options. Clear your CMake cache (delete your indra/build-*/CMakeCache.txt file) before running develop.py again.
- NOTE: If you get " fatal error LNK1104:can not open file 'user32.lib'" error with VC++ Express 2005, then use windows update or click the link in Necessary Software to get "Visual Studio 2005 Express Editions Service Pack 1", then update the service pack with another service pack: these instructions work for Windows 7 32bit; or see here. Finally, you must add the location "C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib" to the list of Lib directories in Visual C++ Express under menu Tools->Options->Projects and Solutions, VC++ directories->Library files (see Visual C++ 2005/2008 Express Edition section above).
LNK1181: cannot open input file 'libgstvideo-0.10.lib
If you see the errorLINK : fatal error LNK1181: cannot open input file 'libgstvideo-0.10.lib CMake didn't find the right GStreamer library names (this was fixed in 1.2). Edit GStreamer.cmake with the right values, or right click imprudence-bin > Properties > Linker > Input > Additional dependencies and make sure these are the file names listed: libgstvideo.lib
libgsttag.lib
libgstsdp.lib
libgstrtsp.lib
libgstrtp.lib
libgstriff.lib
libgstreamer-0.10.lib
libgstpbutils.lib
libgstnetbuffer.lib
libgstnet-0.10.lib
libgstinterfaces.lib
libgstdshow.lib
libgstdataprotocol-0.10.lib
libgstcontroller-0.10.lib
libgstbase-0.10.lib
libgstaudio.lib
libgstapp.lib
viewer_manifest.py errors at the end of a build on Windows
More than likely you'll see something like this:
27>------ Rebuild All started: Project: package, Configuration: Debug Win32 ------ 27>Deleting intermediate and output files for project 'package', configuration 'Debug|Win32' 27>Generating Debug/touched.bat ... 27>Processing relwithdebinfo/imprudence-bin.exe => imprudence.exe ... Traceback (most recent call last): 27> File "/Imprudence 1.3.0 beta 1/linden/indra/newview/viewer_manifest.py", line 1113, in <module> 27> main()
This is an error due to the "package" project that generates files for the installer in 1.3 b1. The files generate fine, but the error can be annoying. You can disable the "package" project by going to ALL_BUILD > Project Dependencies and unchecking "package."
BISON-NOTFOUND or FLEX-NOTFOUND
Also the cause of LINK : fatal error LNK1104: cannot open file '..\lscript\lscript_compile\Debug\lscript_compile.lib' when linking imprudence-bin.