| # ZXing C++ Port |
| |
| This is a manual port of ZXing to C++. It has been tested on Linux, Mac OS X and Windows. |
| |
| ## Building using SCons |
| |
| SCons is a build tool written in Python. You'll need to have Python |
| installed, but scons installation is optional: a run time copy of |
| SCons (called `scons-local`) is included. To use the included copy, |
| replace `scons` with `python scons/scons.py` in the instructions below. |
| |
| To build the library only: |
| |
| 1. Install libiconv (optional; included in many operating systems) |
| 2. `cd` to the `cpp` folder |
| 3. Run `scons lib` |
| |
| To build the command line utility utility: |
| |
| 1. Run `scons zxing` |
| 2. Run `build/zxing` for a command line reference |
| |
| To build the unit tests (optional): |
| |
| 1. Install CppUnit (`libcppunit-dev` on Ubuntu) |
| 2. Run `scons tests` |
| 3. Run `build/testrunner` |
| |
| To clean: |
| |
| 1. Run `scons -c all` |
| |
| # Building using CMake |
| |
| CMake is a tool, that generates native makefiles and workspaces. It |
| integrates well with a number of IDEs including Qt Creator and Visual |
| Studio. |
| |
| Usage with Qt Creator: |
| |
| 1. Open `CMakeLists.txt` as new project |
| 2. Specify command line arguments (see below) and press _Finish_ |
| |
| Usage with Makefiles, Visual Studio, etc. (see `cmake --help` for a complete list of generators): |
| |
| 1. `cd` to `cpp/build` |
| 3. Unix: run `cmake -G "Unix Makefiles" ..` |
| 3. Windows: run `cmake -G "Visual Studio 10" ..` |
| |
| You can switch between build modes by specifying: |
| |
| - `-DCMAKE_BUILD_TYPE=Debug` or |
| - `-DCMAKE_BUILD_TYPE=Release` |
| |
| # Development tips |
| |
| To profile the code (very useful to optimize the code): |
| |
| 1. Install Valgrind |
| 2. Run `valgrind --tool=callgrind build/zxing - path/to/test/data/*.jpg > report.html` |
| 3. Analyze output using KCachegrind |
| |
| To run the black box tests and check for changes: |
| |
| 1. Build `zxing-img`, e.g., scons zxing |
| 2. Run the tests: `bash blackboxtest.sh 2>&1 | tee bb.results` |
| 3. Diff them with the known results: `diff bb.results blackboxtest.results` |