Grimaud 7c3890
# Building on Windows
Grimaud 7c3890
Shinya Kitaoka 0c20bd
This software can be built using Visual Studio 2015 and Qt 5.6
Grimaud 7c3890
Grimaud 7c3890
## Required Software
Grimaud 7c3890
Shinya Kitaoka 0c20bd
### Visual Studio Express 2015 for Windows Desktop
Shinya Kitaoka 0c20bd
- https://www.visualstudio.com/ja-jp/products/visual-studio-express-vs.aspx
Grimaud 7c3890
- Make sure that the target platform is "for Windows Desktop" not "for Windows".
Shinya Kitaoka 0c20bd
- Community and Professional versions of Visual Studio 2015 for Windows Desktop also work.
Grimaud 7c3890
Grimaud 7c3890
### CMake
Grimaud 7c3890
- https://cmake.org/download/
Shinya Kitaoka 0c20bd
- This will be used to create the `MSVC 2015` project file.
Grimaud 7c3890
Grimaud 7c3890
## Acquiring the Source Code
Grimaud 7c3890
- Clone the base repository.
Grimaud 7c3890
- Throughout the explanation `$opentoonz` will represent the root for the base repository.
Shinya Kitaoka 0c20bd
- Visual Studio cannot recognize UTF-8 without BOM source code properly.  Furthermore, since the endline character is represented with only the LF character, one line comments in Japanese will often cause the following line to be treated as a comment by `MSVS` as well.
Grimaud 7c3890
- In order to prevent this, please change the following setting in git so that it will preserve the proper endline characters:
Grimaud 7c3890
  - `git config core.safecrlf true`
Grimaud 7c3890
Grimaud 7c3890
## Installation of Required Libraries
Grimaud 7c3890
Because of the size of these libraries, they are not maintained in the git repository.
Grimaud 7c3890
They will have to be installed seperately as follows.
Grimaud 7c3890
Shinya Kitaoka 0c20bd
### `lib` and `dll`
Shinya Kitaoka 0c20bd
- `lib` and `dll` files are tracked by [Git Large File Storage](https://git-lfs.github.com/).
Shinya Kitaoka 0c20bd
- Execute `git lfs pull` after `git clone` by using the `lfs` client.
Shinya Kitaoka 0c20bd
Grimaud 7c3890
### Qt
Shinya Kitaoka 0c20bd
- https://www.qt.io/download-open-source/
Grimaud 7c3890
- Qt is a cross-platform GUI framework.
Shinya Kitaoka 0c20bd
- Install Qt 5.6 (64-bit version) by [Qt Online Installer for Windows](http://download.qt.io/official_releases/online_installers/qt-unified-windows-x86-online.exe).
Grimaud 7c3890
Grimaud 7c3890
### boost
Shinya Kitaoka 0c20bd
- Boost 1.55.0 or later is required (tested up to 1.60.0).
Shinya Kitaoka 0c20bd
- http://www.boost.org/users/history/version_1_61_0.html
Shinya Kitaoka 0c20bd
- Download boost_1_61_0.zip from the above link.  Extract all contents to the '$opentoonz/thirdparty/boost' directory.
Shinya Kitaoka 0c20bd
- Install the following patch (Make the changes listed in the patch file), if you use Boost 1.55.0 with Visual Studio 2013.
Grimaud 7c3890
  - https://svn.boost.org/trac/boost/attachment/ticket/9369/vc12_fix_has_member_function_callable_with.patch
Grimaud 7c3890
Stephen Shkardoon e239ec
Grimaud 7c3890
## Building
Grimaud 7c3890
Grimaud 7c3890
### Using CMake to Create a Visual Studio Project
Grimaud 7c3890
1. Launch CMake
Grimaud 7c3890
2. In `Where is the source code`, navigate to `$opentoonz/toonz/sources`
Grimaud 7c3890
3. In `Where to build the binaries`, navigate to `$opentoonz/toonz/build`
Grimaud 7c3890
  - Or to wherever you usually build to.
Grimaud 7c3890
  - If the build directory is in the git repository, be sure to add the directory to .gitignore
Grimaud 7c3890
  - If the build directory is different from the one above, be sure to change to the specified directory where appropriate below.
Shinya Kitaoka 0c20bd
4. Click on Configure and select Visual Studio 14 2015 Win64.
Shinya Kitaoka 0c20bd
5. If Qt was installed to a directory other than the default, and the error `Specify QT_PATH properly` appears, navigate to the `QT_DIR` install folder and specify the path to `msvc2015_64`. Rerun Configure. 
Grimaud 7c3890
6. Click Generate
Grimaud 7c3890
  - Should the CMakeLists.txt file change, such as during automatic build cleanup, there is no need to rerun CMake.
Grimaud 7c3890
Grimaud 7c3890
## Setting Up Libraries
Grimaud 7c3890
Rename the following files:
Shinya Kitaoka 0c20bd
  - `$opentoonz/thirdparty/LibJPEG/jpeg-9/jconfig.vc` to `$opentoonz/thirdparty/LibJPEG/jpeg-9/jconfig.h`
Shinya Kitaoka 0c20bd
  - `$opentoonz/thirdparty/tiff-4.0.3/libtiff/tif_config.vc.h` to `$opentoonz/thirdparty/tiff-4.0.3/libtiff/tif_config.h`
Shinya Kitaoka 0c20bd
  - `$opentoonz/thirdparty/tiff-4.0.3/libtiff/tiffconf.vc.h` to `$opentoonz/thirdparty/tiff-4.0.3/libtiff/tiffconf.h`
Shinya Kitaoka 0c20bd
  - `$opentoonz/thirdparty/libpng-1.6.21/scripts/pnglibconf.h.prebuilt` to `$opentoonz/thirdparty/libpng-1.6.21/pnglibconf.h`
Jeremy Bullock e442b1
    - Note that the destination is a different folder for the last file.
Grimaud 7c3890
Shinya Kitaoka fd19c4
Add a guard for snprintf at tif_config.h(50):
Shinya Kitaoka fd19c4
```
Shinya Kitaoka fd19c4
+#if _MSC_VER < 1900
Shinya Kitaoka fd19c4
#define snprintf _snprintf
Shinya Kitaoka fd19c4
+#endif
Shinya Kitaoka fd19c4
```
Shinya Kitaoka fd19c4
Grimaud 7c3890
## Building
Grimaud 7c3890
1. Open `$opentoonz/toonz/build/OpenToonz.sln` and change to `Release`
Grimaud 7c3890
2. The output will be in `$opentoonz/toonz/build/Release`
Grimaud 7c3890
Grimaud 7c3890
## Running the Program
Grimaud 7c3890
### Setting Up the Program's Path
Grimaud 7c3890
1. Copy the entire contents of `$opentoonz/toonz/build/Release` to an appropriate folder.
Jeremy Bullock e442b1
Grimaud 7c3890
2. In the path for `OpenToonz_1.0.exe`, append the Qt program `windeployqt.exe` as an argument.
Grimaud 7c3890
  - The necessary Qt library files should be in the same folder as `OpenToonz_1.0.exe`
Jeremy Bullock e442b1
  - These include:
Jeremy Bullock e442b1
    - `Qt5Core.dll`
Jeremy Bullock e442b1
    - `Qt5Gui.dll`
Jeremy Bullock e442b1
    - `Qt5Network.dll`
Jeremy Bullock e442b1
    - `Qt5OpenGL.dll`
Jeremy Bullock e442b1
    - `Qt5PrintSupport.dll`
Jeremy Bullock e442b1
    - `Qt5Script.dll`
Jeremy Bullock e442b1
    - `Qt5Svg.dll`
Jeremy Bullock e442b1
    - `Qt5Widgets.dll`
Jeremy Bullock e442b1
  - These files should be in the corresponding folders in the same folder `OpenToonz_1.0.exe`
Jeremy Bullock e442b1
    - `/bearer/qgenericbearer.dll`
Jeremy Bullock e442b1
    - `/bearer/qnativewifibearer.dll`
Jeremy Bullock e442b1
    - `/iconengines/qsvgicon.dll`
Jeremy Bullock e442b1
    - `/imageformats/qdds.dll`
Jeremy Bullock e442b1
    - `/imageformats/qgif.dll`
Jeremy Bullock e442b1
    - `/imageformats/qicns.dll`
Jeremy Bullock e442b1
    - `/imageformats/qico.dll`
Jeremy Bullock e442b1
    - `/imageformats/qjpeg.dll`
Jeremy Bullock e442b1
    - `/imageformats/qsvg.dll`
Jeremy Bullock e442b1
    - `/imageformats/qtga.dll`
Jeremy Bullock e442b1
    - `/imageformats/qtiff.dll`
Jeremy Bullock e442b1
    - `/imageformats/qwbmp.dll`
Jeremy Bullock e442b1
    - `/imageformats/qwebp.dll`
Jeremy Bullock e442b1
    - `/platforms/qwindows.dll`
Jeremy Bullock e442b1
Grimaud 7c3890
3. Copy the following files to the same folder as `OpenToonz_1.0.exe`
Grimaud 7c3890
  - `$opentoonz/thirdparty/glut/3.7.6/lib/glut64.dll`
Grimaud 7c3890
  - `$opentoonz/thirdparty/glew/glew-1.9.0/bin/64bit/glew32.dll`
Jeremy Bullock e442b1
Grimaud 7c3890
4. Copy the `srv` folder from the previous OpenToonz installation to the same folder as `OpenToonz_1.0.exe`
Grimaud 7c3890
  - If there is no `srv` folder, OpenToonz can still be used.  However, various file formats such as `mov` cannot be used.
Grimaud 7c3890
  - Creating the files for `srv` is discussed later.
Grimaud 7c3890
Grimaud 7c3890
### Creating the stuff Folder
Grimaud 7c3890
If a previous binary of OpenToonz was already installed, this step and the following about creating a registry key has already been dealt with.  So feel free to skip these parts.
Grimaud 7c3890
Grimaud 7c3890
1. Copy the files from `$opentoonz/stuff` to an appropriate folder.
Grimaud 7c3890
Grimaud 7c3890
### Creating Registry Keys
Grimaud 7c3890
1. Using the registry editor, create the following key and copy the path of the `$opentoonz/stuff` folder from above to it.
Grimaud 7c3890
  - HKEY_LOCAL_MACHINE\SOFTWARE\OpenToonz\OpenToonz\1.0\TOONZROOT
Grimaud 7c3890
Grimaud 7c3890
### Running
Grimaud 7c3890
`OpenToonz_1.0.exe` can now be run.  Congratulations!
Grimaud 7c3890
Shinya Kitaoka 0c20bd
## Creating the Files for the `srv` Folder
Grimaud 7c3890
OpenToonz utilizes the QuickTime SDK's `mov` and associated file formats.  Since the QuickTime SDK only comes in 32-bit versions, the 32-bit file `t32bitsrv.exe` from the QuickTime SDK is used in both the 64-bit and 32-bit versions of OpenToonz.  As a result, the following instructions apply to both the 32 and 64-bit versions of OpenToonz.
Grimaud 7c3890
Grimaud 7c3890
### Qt
Shinya Kitaoka 0c20bd
- https://www.qt.io/download-open-source/
Shinya Kitaoka 0c20bd
- Install Qt 5.6 (32-bit version) by the  by [Qt Online Installer for Windows](http://download.qt.io/official_releases/online_installers/qt-unified-windows-x86-online.exe).
Grimaud 7c3890
Grimaud 7c3890
### QuickTime SDK
Grimaud 7c3890
1. Sign in using your Apple developer ID and download `QuickTime 7.3 SDK for Windows.zip` from the following url.
Grimaud 7c3890
  - https://developer.apple.com/downloads/?q=quicktime
Grimaud 7c3890
2. After installing the QuickTime SDK, copy the contents of `C:\Program Files (x86)\QuickTime SDK` to `$opentoonz/thirdparty/quicktime/QT73SDK`
Grimaud 7c3890
Grimaud 7c3890
### Using CMake to Create a Visual Studio 32-bit Project
Grimaud 7c3890
- Follow the same instructions as for the 64-bit version, but change the following:
Shinya Kitaoka 0c20bd
  - `$opentoonz/toonz/build` to `$opentoonz/toonz/build32`
Shinya Kitaoka 0c20bd
  - `Visual Studio 14 2015 Win64` to `Visual Studio 14 2015`
Shinya Kitaoka 0c20bd
- Change `QT_PATH` to the path of your 32-bit version of Qt
Grimaud 7c3890
Grimaud 7c3890
### Building the 32-bit Version
Grimaud 7c3890
1. Open `$opentoonz/toonz/build32/OpenToonz.sln`
Grimaud 7c3890
Shinya Kitaoka 0c20bd
### Layout of the `srv` Folder
Grimaud 7c3890
- For the 64-bit version, copy the following files to the `srv` folder:
Grimaud 7c3890
  - From `$opentoonz/toonz/build32/Release`
Grimaud 7c3890
    - t32bitsrv.exe
Grimaud 7c3890
    - image.dll
Grimaud 7c3890
    - tnzcore.dll
Grimaud 7c3890
  - From the 32-bit version of Qt
Grimaud 7c3890
    - Qt5Core.dll
Grimaud 7c3890
    - Qt5Network.dll
Grimaud 7c3890
  - `$opentoonz/thirdparty/glut/3.7.6/lib/glut32.dll`
Grimaud 7c3890
Grimaud 7c3890
## Creating Translation Files
Grimaud 7c3890
Qt translation files are generated first from the source code to .ts files, then from .ts files to a .qm file.  These files can be created in Visual Studio if the `translation_` project and `Build translation_??? only` (`translation_???`のみをビルド」) is used.  These files are not created in the default `Build Project Solution`.