.. _build_from_sources:
Build from sources
==================
Install GCC and CMake
----------------------
The main compilation directives are specified using
- `GCC compiler `_ to build the binaries
- `CMake `__ to create the Makefiles
Linux
^^^^^
Both :code:`gcc` and :code:`cmake` commands are already installed by default.
Mac OS
^^^^^^
Install Xcode and command line tools
""""""""""""""""""""""""""""""""""""
#. Install the latest release of `Xcode `_.
#. Install the command line tools by executing from the terminal
.. code:: bash
xcode-select --install
Install CMake via Homebrew
"""""""""""""""""""""""""""
#. Install `Homebrew `_ and update its packages to the latest version.
#. Install cmake by executing
.. code:: bash
brew install cmake
Windows
^^^^^^^
#. Install `TDM-GCC `_ 32bit or 64bit depending on your platform.
#. Install the latest binaries of `CMake `__.
Build the binaries
------------------
Run the following commands from the terminal
#. You first need to get the sources from one of these two options:
* Download the compressed file `from bintray.com `_.
* Clone the repository
.. code:: bash
git clone --recursive https://github.com/oxfordcontrol/osqp
#. Create :code:`build` directory and change directory
.. code:: bash
cd osqp
mkdir build
cd build
#. Create Makefiles
- In Linux and Mac OS run
.. code:: bash
cmake -G "Unix Makefiles" ..
- In Windows run
.. code:: bash
cmake -G "MinGW Makefiles" ..
#. Compile OSQP
.. code:: bash
cmake --build .
Thanks to CMake, it is possible to create projects for a wide variety of IDEs; see `here `_ for more details. For example, to create a project for Visual Studio 14 2015, it is just necessary to run
.. code:: bash
cmake -G "Visual Studio 14 2015" ..
The compilation will generate the demo :code:`osqp_demo` and the unittests :code:`osqp_tester` executables. In the case of :code:`Unix` or :code:`MinGW` :code:`Makefiles` option they are located in the :code:`build/out/` directory. Run them to check that the compilation was correct.
Once the sources are built, the generated static :code:`build/out/libosqp.a` and shared :code:`build/out/libosqp.ext` libraries can be used to interface any C/C++ software to OSQP (see :ref:`install_osqp_libs` installation).
.. _install_the_binaries:
Install the binaries
--------------------
To install the generated libraries and headers to a system-wide location compatible with `GNU standards `_ it is just necessary to run
.. code:: bash
cmake --build . --target install
This code installs the libraries in :code:`libdir` and the headers into :code:`includedir/osqp`. For mode details see the defaults folders on the `GNU standards `_ website.
To change the installation prefix, in the "Create Makefiles" step above, you need to specify the destination folder as :code:`cmake -DCMAKE_INSTALL_PREFIX:PATH=myfolder ..`.
.. note:: This step requires write permissions in the destination
folders. You might be able to gain access using the
:code:`sudo` command.
We provided also an uninstall routine to remove the copied files by running
.. code:: bash
cmake --build . --target uninstall
Note that this corresponds to running :code:`make install` and :code:`make uninstall` on unix machines.