* This library is used to decode and encode video, audio, and image files. It is also used to obtain information about media files, such as frame rate, sample rate, aspect ratio, and other common attributes.
* This library is used to mix, resample, host plug-ins, and play audio. It is based on the JUCE project, which is an outstanding audio library used by many different applications
* Qt5 is used to display video, store image data, composite images, apply image effects, and many other utility functions, such as file system manipulation, high resolution timers, etc...
* This executable is used to automate the generation of Makefiles, check for dependencies, and is the backbone of libopenshot’s cross-platform build process.
* This executable is used to generate the Python and Ruby bindings for libopenshot. It is a simple and powerful wrapper for C++ libraries, and supports many languages.
* http://www.python.org/ `(Executable and Library)`
* This library is used by swig to create the Python (version 3+) bindings for libopenshot. This is also the official language used by OpenShot Video Editor (a graphical interface to libopenshot).
* This library is used to communicate between libopenshot and other applications (publisher / subscriber). Primarily used to send debug data from libopenshot.
* If your compiler supports this flag (GCC, Clang, and most other compilers), it provides libopenshot with easy methods of using parallel programming techniques to improve performance and take advantage of multi-core processors.
## CMake Flags (Optional)
There are many different build flags that can be passed to cmake to adjust how libopenshot is compiled.
Some of these flags might be required when compiling on certain OSes, just depending on how your build
environment is setup. To add a build flag, follow this general syntax:
* This folder needs to be manually created, and is used by cmake to store the temporary build files, such as makefiles, as well as the final binaries (library and test executables).
* This folder contains custom modules not included by default in cmake, used to find dependency libraries and headers and determine if these libraries are installed.
* This folder contains all unit test code. Each class has it’s own test file (*.cpp), and uses UnitTest++ macros to keep the test code simple and manageable.
cmake -d -G "Unix Makefiles" -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang ../ (CLang must be used due to GNU incompatible Objective-C code in some of the Apple frameworks)
The extra arguments on the cmake command make sure the compiler will be gcc4.8 and that cmake
knows where to look for the Qt header files and Python library. Double check these file paths,
as yours will likely be different.
```
make
```
If you are missing any dependencies for libopenshot, you will receive error messages at this point.
Just install the missing dependencies, and run the above commands again. Repeat until no error
messages are displayed and the build process completes.
Also, if you are having trouble building, please see the CMake Flags section above, as it might
provide a solution for finding a missing folder path, missing Python 3 library, etc...
To run all unit tests (and verify everything is working correctly), launch a terminal, and enter:
```
make test
```
To auto-generate the documentation for libopenshot, launch a terminal, and enter:
```
make doc
```
This will use doxygen to generate a folder of HTML files, with all classes and methods documented.
The folder is located at build/doc/html/. Once libopenshot has been successfully built, we need
to install it (i.e. copy it to the correct folder, so other libraries can find it).
```
make install
```
This should copy the binary files to /usr/local/lib/, and the header files to /usr/local/include/openshot/...
This is where other projects will look for the libopenshot files when building. Python 3 bindings are
also installed at this point. let's verify the python bindings work:
```
python3 (or python)
>>> import openshot
```
If no errors are displayed, you have successfully compiled and installed libopenshot on your
system. Congratulations and be sure to read our wiki on [Becoming an OpenShot Developer](https://github.com/OpenShot/openshot-qt/wiki/Become-a-Developer)!
Welcome to the OpenShot developer community! We look forward to meeting you!