2014-06-13 11:53:51 +01:00
|
|
|
Building UPM {#building}
|
|
|
|
============
|
|
|
|
|
|
|
|
UPM uses cmake in order to make compilation relatively painless. Cmake runs
|
|
|
|
build out of tree so the recommended way is to clone from git and make a build/
|
|
|
|
directory.
|
|
|
|
|
|
|
|
UPM will attempt to build all directories inside src/ and they must contain
|
|
|
|
individual CMakeLists.txt files.
|
|
|
|
|
|
|
|
~~~~~~~~~~~~~{.sh}
|
|
|
|
mkdir build
|
|
|
|
cd build
|
|
|
|
cmake ..
|
|
|
|
make
|
|
|
|
~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
Our cmake configure has a number of options, `cmake -i` will ask you all sorts
|
|
|
|
of interesting questions, you can disable swig modules, build documentation
|
|
|
|
etc...
|
|
|
|
|
|
|
|
Few recommended options:
|
|
|
|
Changing install path from /usr/local to /usr
|
|
|
|
-DCMAKE_INSTALL_PREFIX:PATH=/usr
|
|
|
|
|
|
|
|
Building debug build:
|
|
|
|
-DCMAKE_BUILD_TYPE=DEBUG
|
|
|
|
|
|
|
|
Using clang instead of gcc:
|
|
|
|
-DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang
|
|
|
|
|
2014-07-14 10:49:17 +01:00
|
|
|
Often developers are only interested in building one module or even just the
|
|
|
|
python/node module to do some quick testing using scripting. In order to do
|
|
|
|
this you need to use the target name for the python or node module you want to
|
|
|
|
rebuild. For example the lcd module target name is i2clcd. Therfore the python
|
|
|
|
module target name will be prefixed by _pyupm_. Just do the following to build
|
|
|
|
only that module. Modules not using the UPM cmake macros may have different
|
|
|
|
naming.
|
|
|
|
|
|
|
|
~~~~~~~~~~~~~
|
|
|
|
make _pyupm_i2clcd
|
|
|
|
~~~~~~~~~~~~~
|
2014-07-14 10:55:17 +01:00
|
|
|
|
|
|
|
Sometimes you want to build a small C++ example against an installed library.
|
|
|
|
This is fairly easy if installed systemwide. Just link against the correct
|
|
|
|
librar (in this case libupm-tm1637) and then add /usr/include/upm to the loader
|
|
|
|
path:
|
|
|
|
|
|
|
|
~~~~~~~~~~~~
|
|
|
|
g++ test.cxx -lupm_tm1637 -I/usr/include/upm
|
|
|
|
~~~~~~~~~~~~
|
|
|
|
|
|
|
|
You can also use pkg-config to return the information to you, which is
|
|
|
|
considered the correct way if including UPM in a build system like cmake or
|
|
|
|
autotools on linux.
|
|
|
|
|
|
|
|
~~~~~~~~~~~
|
|
|
|
pkg-config --cflags --libs upm-tm1637
|
|
|
|
~~~~~~~~~~~
|