'impl' directory contains implementation-detail headers that are NOT installed. 'detail' directory will be used for implementation-detail headers that ARE installed. refs #4782 Change-Id: I13428e032c93207753a6b856c693511c4fc3bbb8
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:
- 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
- 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.cppfiles in this directory will be compiled and linked together to produce the binary of the tool. One of the .cpp files should contain themain()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