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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
|
.. _getting_started:
Getting Started
===============
.. _getting_started-requirements:
Requirements
------------
These components will almost certainly already be on your system.
* `gcc`_ (4.8+) OR `clang`_ (v3.1+)
* pthreads
* zlib
Double-check your compiler version, to be sure it is compatible.
.. code-block:: console
$ g++ -v
$ clang -v
Additional requirements:
* `Boost`_ (1.55+)
* `CMake`_ (3.0+)
* `Google Test`_
* `htslib`_ (1.4+)
For additional languages:
* `SWIG`_ (3.0.5+)
For building API documentation locally:
* `Doxygen`_
For maximal convenience, install htslib and google test in the same parent directory you plan to install pbbam.
.. _Boost: http://www.boost.org/
.. _clang: http://clang.llvm.org/
.. _CMake: https://cmake.org/
.. _Meson: http://mesonbuild.com/
.. _Ninja: https://ninja-build.org/ (only required when using Meson, optional for CMake)
.. _Doxygen: http://www.stack.nl/~dimitri/doxygen/
.. _gcc: https://gcc.gnu.org/
.. _Google Test: https://github.com/google/googletest
.. _htslib: https://github.com/samtools/htslib.git
.. _SWIG: http://www.swig.org/
.. _getting_started-build:
Clone & Build
-------------
.. note::
The following steps are for building the C++ library and command-line utilities.
If you are integrating pbbam into a C#, Python, or R project, take a look at the
instructions for :ref:`additional languages <swig_bindings>`.
The basic steps for obtaining pbbam and building it from source are as follows:
Build and install htslib, per the project's instructions (or on OSX "brew install htslib").
Clone
^^^^^
You should first clone the repository:
.. code-block:: console
$ git clone https://github.com/PacificBiosciences/pbbam.git
$ cd pbbam
Building with CMake
^^^^^^^^^^^^^^^^^^^
When building with CMake, create a separate build directory:
.. code-block:: console
$ mkdir build
$ cd build
$ cmake ..
$ make -j 4 # compiles using 4 threads
Output:
* Library : <pbbam_root>/lib
* Headers : <pbbam_root>/include
* Utilities : <pbbam_root>/bin
You may need to set a few options on the cmake command, to point to dependencies' install locations.
Common installation-related options include:
* GTEST_SRC_DIR
Add these using the '-D' argument, like this:
.. code-block:: console
$ cmake .. -DGTEST_SRC_DIR="path/to/googletest"
To run the test suite, run:
.. code-block:: console
$ make test
To build a local copy of the (Doxygen-style) API documentation, run:
.. code-block:: console
$ make doc
And then open <pbbam_root>/docs/html/index.html in your favorite browser.
.. _getting_started-integrate:
Building with Meson
^^^^^^^^^^^^^^^^^^^
Building with Meson is generally faster and more versatile. Meson strictly requires building out of source:
.. code-block:: console
$ mkdir build
$ cd build
$ meson --prefix /my/install/prefix -Dtests=true ..
$ ninja
where ninja will by default utilize a number of threads for compilation equal to the number of logical
cores on your system. Here ``-Dtests=true`` enables pulling in dependencies for testing. In
order to run the test suite, run:
.. code-block:: console
$ ninja test
If you wish to install pbbam, run:
.. code-block:: console
$ ninja install
and ninja will install pbbam to ``/my/install/prefix``.
Integrate
---------
CMake-based projects
````````````````````
For CMake-based projects that will "ship with" or otherwise live alongside pbbam, you can
use the approach described here.
Before defining your library or executable, add the following:
.. code-block:: cmake
add_subdirectory(<path/to/pbbam> external/build/pbbam)
When it's time to run "make" this will ensure that pbbam will be built, inside your own project's
build directory. After this point in the CMakeLists.txt file(s), a few variables will be available
that can be used to setup your include paths and library linking targets:
.. code-block:: cmake
include_directories(
${PacBioBAM_INCLUDE_DIRS}
# other includes that your project needs
)
add_executable(foo)
target_link_libraries(foo
${PacBioBAM_LIBRARIES}
# other libs that your project needs
)
Non-CMake projects
``````````````````
If you're using something other than CMake for your project's build system, then you need to point
it to pbbam's include directory & library, as well as those of its dependencies (primarily htslib).
If you built and installed pbbam using Meson, pkg-config files will be available to be consumed by
projects wishing to utilize pbbam. Autoconf, CMake, Waf, SCons and Meson all have means to determine
dependency information from pkg-config files.
|