1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
The CMake build system is used to build ns-3. CMake is a
meta-build system (https://cmake.org/)
Note: We've added a wiki page with more complete build instructions
than the quick ones you find below:
http://www.nsnam.org/wiki/Installation
=== Installing CMake ===
To use CMake, you need to download it and install it. This can be done
via package managers available for your operating system, or directly
from the CMake page: https://cmake.org/download/.
CMake is a meta-build system that relies on an underlying build system.
This build system is referred to as Generators by CMake
(https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html),
and include Makefiles, Ninja, XCode, Eclipse CDT4 and others.
One of these must be installed for CMake to work.
=== Building with ns3 ===
To build ns-3 with the ns3 CMake wrapper type the commands from the top-level directory:
1. ./ns3 configure [options]
2. ./ns3 build
To see valid configure options, type ./ns3 --help. The most important
option is -d <debug level>. Valid debug levels (which are listed in
ns3 --help) are: "debug" or "optimized", with debug being default. It is
also possible to change the flags used for compilation with (e.g.):
CXXFLAGS="-O3" ./ns3 configure. By default, ns-3 is built as debug code,
with examples and tests disabled, and with python bindings enabled.
[ Note: Unlike some other build tools, to change the build target,
the option must be supplied during the configure stage rather than
the build stage (i.e., "./ns3 build -d optimized" will not work; instead, do
"./ns3 configure -d optimized; ./ns3 build" ]
The resulting executables and libraries are placed in build/.
Other ns3 usages include:
1. ./ns3 configure --enable-examples --enable-tests
Turn on examples and tests.
2. ./ns3 configure --disable-python
Disable python bindings.
3. ./ns3 docs doxygen
Run doxygen to generate documentation
4. ./ns3 run "program [args]"
Run a ns3 program, given its target name, with the given
arguments. This takes care of automatically modifying the
path for finding the ns3 dynamic libraries in the environment
before running the program. Note: the "program [args]" string is
parsed using POSIX shell rules.
4.1 ./ns3 run program-name --command-template "... %s ..."
Same as run, but uses a command template with %s replaced by the
actual program (whose name is given by run). This can be use to
run ns-3 programs with helper tools. For example, to run unit
tests with valgrind, use the command:
./ns3 run run-tests --command-template "valgrind %s"
5. ./ns3 shell
Starts a nested system shell with modified environment to run ns3 programs.
6. ./ns3 clean
Cleans out the entire build/ directory
=== Extending ns-3 ===
To add new modules:
1. Create the module directory under src;
2. Add the source files to it;
3. Add a 'CMakeLists.txt' describing it;
A convenience program to auto-generate the template of a new module can
be found in src/create-module.py.
A ns-3 module is created as a cpp/shlib object, like this:
set(name ns3-mymodule)
set(source_files
model/ns3-mymodule.cc
helper/ns3-mymodule-helper.cc
)
set(header_files
model/ns3-mymodule.h
helper/ns3-mymodule-helper.h
)
set(libraries_to_link
libcore # lib prefix + module name
)
set(test_sources
test/test-mymodule.cc
)
build_lib(
LIBNAME ${name}
SOURCE_FILES ${source_files}
HEADER_FILES ${header_files}
LIBRARIES_TO_LINK ${libraries_to_link}
TEST_SOURCES ${test_sources}
)
|