56 lines
2.0 KiB
Markdown
56 lines
2.0 KiB
Markdown
ndn-cxx tools
|
|
=============
|
|
|
|
Unless disabled with `--without-tools` configuration option, files in `tools/` directory
|
|
are automatically build and installed to `${PREFIX}/bin` folder.
|
|
|
|
There are two ways to add new tools, depending on their complexity:
|
|
|
|
1. Tools with a single translation unit
|
|
|
|
For simple tools that have a single translation unit, the `.cpp` file can be directly put
|
|
in `tools/` folder and it will be automatically compiled on the next run of `./waf`. Name
|
|
of the compiled binary will be determined by the base name of the `.cpp` file. For example,
|
|
`tools/foo.cpp` will be compiled into binary `foo` in `<build>/bin/` folder:
|
|
|
|
echo "int main() { return 0; }" > tools/foo.cpp
|
|
./waf
|
|
# ... Compiling tools/foo.cpp
|
|
# ... Linking build/bin/foo
|
|
|
|
sudo ./waf install
|
|
# ... install /usr/local/bin/foo (from build/bin/foo)
|
|
|
|
# To run the tool
|
|
/usr/local/bin/foo
|
|
|
|
2. Tools with multiple translation units
|
|
|
|
For more complex tools that contain multiple translation units, one can use
|
|
the following directory structure:
|
|
|
|
- Create a directory under `tools/` folder (e.g., `tools/bar`).
|
|
The name of this directory will determine the name of the compiled binary
|
|
(`<build>/bin/bar`)
|
|
|
|
- Place any number of translation units (e.g., `tools/bar/a.cpp`, `tools/bar/b.cpp`,
|
|
...) in this directory. All `.cpp` files in this directory will be compiled and linked
|
|
together to produce the binary of the tool. One of the .cpp files should contain
|
|
the `main()` function.
|
|
|
|
For example:
|
|
|
|
mkdir tools/bar
|
|
echo "int bar(); int main() { return bar(); }" > tools/bar/a.cpp
|
|
echo "int bar() { return 10; } " > tools/bar/b.cpp
|
|
./waf
|
|
# ... Compiling tools/bar/a.cpp
|
|
# ... Compiling tools/bar/b.cpp
|
|
# ... Linking build/bin/bar
|
|
|
|
sudo ./waf install
|
|
# ... install /usr/local/bin/bar (from build/bin/bar)
|
|
|
|
# To run the tool
|
|
/usr/local/bin/bar
|