zxing/cpp/README.md
smparkes@smparkes.net 12222ad493 Merge schulzch VS support and other cleanup
git-svn-id: https://zxing.googlecode.com/svn/trunk@2654 59b500cc-1b3d-0410-9834-0bbf25fbcc57
2013-04-14 23:32:38 +00:00

68 lines
1.9 KiB
Markdown

# 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`