| Building Libwebm |
| |
| To build libwebm you must first create project files. To do this run cmake |
| and pass it the path to your libwebm repo. |
| |
| Makefile.unix can be used as a fallback on systems that cmake does not |
| support. |
| |
| |
| CMake Basics |
| |
| To generate project/make files for the default toolchain on your system simply |
| run cmake with the path to the libwebm repo: |
| |
| $ cmake path/to/libwebm |
| |
| On Windows the above command will produce Visual Studio project files for the |
| newest Visual Studio detected on the system. On Mac OS X and Linux systems, the |
| above command will produce a makefile. |
| |
| To control what types of projects are generated the -G parameter is added to |
| the cmake command line. This argument must be followed by the name of a |
| generator. Running cmake with the --help argument will list the available |
| generators for your system. |
| |
| On Mac OS X you would run the following command to generate Xcode projects: |
| |
| $ cmake path/to/libwebm -G Xcode |
| |
| On a Windows box you would run the following command to generate Visual Studio |
| 2013 projects: |
| |
| $ cmake path/to/libwebm -G "Visual Studio 12" |
| |
| To generate 64-bit Windows Visual Studio 2013 projects: |
| |
| $ cmake path/to/libwebm "Visual Studio 12 Win64" |
| |
| |
| CMake Makefiles: Debugging and Optimization |
| |
| Unlike Visual Studio and Xcode projects, the build configuration for make builds |
| is controlled when you run cmake. The following examples demonstrate various |
| build configurations. |
| |
| Omitting the build type produces makefiles that use build flags containing |
| neither optimization nor debug flags: |
| $ cmake path/to/libwebm |
| |
| A makefile using release (optimized) flags is produced like this: |
| $ cmake path/to/libwebm -DCMAKE_BUILD_TYPE=release |
| |
| A release build with debug info can be produced as well: |
| $ cmake path/to/libwebm -DCMAKE_BUILD_TYPE=relwithdebinfo |
| |
| And your standard debug build will be produced using: |
| $ cmake path/to/libwebm -DCMAKE_BUILD_TYPE=debug |
| |
| |
| Tests |
| |
| To enable libwebm tests add -DENABLE_TESTS=ON CMake generation command line. For |
| example: |
| |
| $ cmake path/to/libwebm -G Xcode -DENABLE_TESTS=ON |
| |
| Libwebm tests depend on googletest. By default googletest is expected to be a |
| sibling directory of the Libwebm repository. To change that, update your CMake |
| command to be similar to the following: |
| |
| $ cmake path/to/libwebm -G Xcode -DENABLE_TESTS=ON \ |
| -DGTEST_SRC_DIR=/path/to/googletest |
| |
| The tests rely upon the LIBWEBM_TEST_DATA_PATH environment variable to locate |
| test input. The following example demonstrates running the muxer tests from the |
| build directory: |
| |
| $ LIBWEBM_TEST_DATA_PATH=path/to/libwebm/testing/testdata ./mkvmuxer_tests |
| |
| Note: Libwebm Googletest integration was built with googletest from |
| https://github.com/google/googletest.git at git revision |
| ddb8012eb48bc203aa93dcc2b22c1db516302b29. |
| |
| |
| CMake Include-what-you-use integration |
| |
| Include-what-you-use is an analysis tool that helps ensure libwebm includes the |
| C/C++ header files actually in use. To enable the integration support |
| ENABLE_IWYU must be turned on at cmake run time: |
| |
| $ cmake path/to/libwebm -G "Unix Makefiles" -DENABLE_IWYU=ON |
| |
| This adds the iwyu target to the build. To run include-what-you-use: |
| |
| $ make iwyu |
| |
| The following requirements must be met for ENABLE_IWYU to enable the iwyu |
| target: |
| |
| 1. include-what-you-use and iwyu_tool.py must be in your PATH. |
| 2. A python interpreter must be on the system and available to CMake. |
| |
| The values of the following variables are used to determine if the requirements |
| have been met. Values to the right of the equals sign are what a successful run |
| might look like: |
| iwyu_path=/path/to/iwyu_tool.py |
| iwyu_tool_path=/path/to/include-what-you-use |
| PYTHONINTERP_FOUND=TRUE |
| |
| An empty PYTHONINTERP_FOUND, or iwyu_path/iwyu_tool_path suffixed with NOTFOUND |
| are failures. |
| |
| For Include-what-you-use setup instructions, see: |
| https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/InstructionsForUsers.md |
| |
| If, when building the iwyu target, compile errors reporting failures loading |
| standard include files occur, one solution can be found here: |
| https://github.com/include-what-you-use/include-what-you-use/issues/100 |
| |
| |
| CMake cross compile |
| To cross compile libwebm for Windows using mingw-w64 run cmake with the |
| following arguments: |
| |
| $ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/libwebm/build/mingw-w64_toolchain.cmake \ |
| path/to/libwebm |
| |
| Note1: As of this writing googletest will not build via mingw-w64 without |
| disabling pthreads. |
| googletest hash: d225acc90bc3a8c420a9bcd1f033033c1ccd7fe0 |
| |
| To build with tests when using mingw-w64 use the following arguments when |
| running CMake: |
| |
| $ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/libwebm/build/mingw-w64_toolchain.cmake \ |
| -DENABLE_TESTS=ON -Dgtest_disable_pthreads=ON path/to/libwebm |
| |
| Note2: i686-w64-mingw32 is the default compiler. This can be controlled using |
| the MINGW_PREFIX variable: |
| |
| $ cmake -DCMAKE_TOOLCHAIN_FILE=path/to/libwebm/build/mingw-w64_toolchain.cmake \ |
| -DMINGW_PREFIX=x86_64-w64-mingw32 path/to/libwebm |
| |