Grimaud 7c3890
# Building on Windows
Grimaud 7c3890
shun_iwasawa 31362d
This software can be built using Visual Studio 2015 and Qt 5.9
Grimaud 7c3890
Grimaud 7c3890
## Required Software
Grimaud 7c3890
Shinya Kitaoka 0c20bd
### Visual Studio Express 2015 for Windows Desktop
J.P. Turcotte 0e6a35
- https://www.visualstudio.com/vs/older-downloads/
J.P. Turcotte 0e6a35
- Make sure that the version is "2015" and 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.
J.P. Turcotte 0e6a35
- Visual Studio 2017 is currently unsupported.
J.P. Turcotte 0e6a35
- During the installation, make sure to select all the Visual C++ packages.
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.
J.P. Turcotte 0e6a35
- Install Qt 5.9 (64-bit version, tested up to 5.9.4) with the [Qt Online Installer for Windows](http://download.qt.io/official_releases/online_installers/qt-unified-windows-x86-online.exe).
Grimaud 7c3890
Grimaud 7c3890
### boost
J.P. Turcotte 0e6a35
- Boost 1.55.0 or later is required (tested up to 1.61.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.
J.P. Turcotte 0e6a35
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.
J.P. Turcotte 0e6a35
  - If red lines appear in the bottom box, you can safely ignore them.
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
Grimaud 7c3890
## Building
J.P. Turcotte 0e6a35
1. Open `$opentoonz/toonz/build/OpenToonz.sln` and change to `Debug` or `Release` in the top bar.
J.P. Turcotte 0e6a35
2. The output will be in the corresponding folder in `$opentoonz/toonz/build/`
Grimaud 7c3890
Jeremy Bullock f15907
## Building with extended stop motion support for webcams and Canon DSLR cameras.
Jeremy Bullock f15907
You will need three additional libraries.
shun-iwasawa 590082
  - [OpenCV](https://opencv.org/) (v4.1.0 and later)
Jeremy Bullock f15907
  - [libjpeg-turbo](https://www.libjpeg-turbo.org/)
Jeremy Bullock f15907
  - The Canon SDK.  This requires applying for the Canon developer program and downloading the SDK.
Jeremy Bullock f15907
Jeremy Bullock f15907
Copy the following folders into the `$opentoonz/thirdparty` folder.
Jeremy Bullock f15907
  - Copy the Header and library folders from the Canon SDK to `$opentoonz/thirdparty/canon`
Jeremy Bullock f15907
    - Make sure that the library is the one from the EDSDK_64 folder.
Jeremy Bullock f15907
  - Copy the lib and include folders from libjpeg-turbo64 into `$opentoonz/thirdparty/libjpeg-turbo64`.
Jeremy Bullock f15907
Jeremy Bullock f15907
Check the checkbox in CMake to build with stop motion support.
shun-iwasawa 590082
On configuring with CMake or in the environmental variables, specify `OpenCV_DIR` to the `build` folder in the install folder of OpenCV (like `C:/opencv/build`).
Jeremy Bullock f15907
Jeremy Bullock f15907
To run the program with stop motion support, you will need to copy the .dll files from opencv2, libjpeg-turbo and the Canon SDK into the folder where your project is built.
Jeremy Bullock f15907
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
shun-iwasawa f39ea0
2. Open a Command Prompt and navigate to `QT_DIR/msvc2015_64/bin`. Run the Qt program `windeployqt.exe` with the path for `OpenToonz.exe` as an argument.
shun-iwasawa f39ea0
  - The necessary Qt library files should be in the same folder as `OpenToonz.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 a61010
    - `Qt5Multimedia.dll`
shun-iwasawa f39ea0
  - These files should be in the corresponding folders in the same folder `OpenToonz.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
shun-iwasawa f39ea0
3. Copy the following files to the same folder as `OpenToonz.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
shun-iwasawa f39ea0
4. Copy the `srv` folder from the previous OpenToonz installation to the same folder as `OpenToonz.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.
shun-iwasawa f39ea0
  - HKEY_LOCAL_MACHINE\SOFTWARE\OpenToonz\OpenToonz\TOONZROOT
Grimaud 7c3890
Grimaud 7c3890
### Running
shun-iwasawa f39ea0
`OpenToonz.exe` can now be run.  Congratulations!
Grimaud 7c3890
J.P. Turcotte 0e6a35
## Debugging
shun-iwasawa f39ea0
1. In the Solution Explorer, select the OpenToonz project within the OpenToonz solution.
J.P. Turcotte 0e6a35
2. In the Project menu, choose Set as StartUp Project.
J.P. Turcotte 0e6a35
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/
shun_iwasawa 31362d
- Install Qt 5.9 (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`.