vendor/scs/README.md in scs-0.2.2 vs vendor/scs/README.md in scs-0.2.3

- old
+ new

@@ -1,11 +1,12 @@ -SCS -==== +<h1 align="center" margin=0px> +<img src="https://github.com/cvxgrp/scs/blob/master/docs/scs_logo.png" alt="Intersection of a cone and a polyhedron" width="450"> +</h1> -[![Build Status](https://travis-ci.org/cvxgrp/scs.svg?branch=master)](https://travis-ci.org/cvxgrp/scs) -[![Build status](https://ci.appveyor.com/api/projects/status/4542u6kom5293qpm/branch/master?svg=true)](https://ci.appveyor.com/project/bodono/scs/branch/master) +![Build Status](https://github.com/cvxgrp/scs/actions/workflows/build.yml/badge.svg) + SCS (`splitting conic solver`) is a numerical optimization package for solving large-scale convex cone problems, based on our paper [Conic Optimization via Operator Splitting and Homogeneous Self-Dual Embedding](http://www.stanford.edu/~boyd/papers/scs.html). It is written in C and can be used in other C, C++, @@ -16,14 +17,15 @@ [Ruby](https://github.com/ankane/scs), programs via the linked interfaces. It can also be called as a solver from convex optimization toolboxes [CVX](http://cvxr.com/cvx/) (3.0 or later), [CVXPY](https://github.com/cvxgrp/cvxpy), -[Convex.jl](https://github.com/JuliaOpt/Convex.jl), and +[Convex.jl](https://github.com/jump-dev/Convex.jl), +[JuMP.jl](https://github.com/jump-dev/JuMP.jl), and [Yalmip](https://github.com/johanlofberg/YALMIP). -The current version is `2.1.2`. If you wish to cite SCS, please use the +The current version is `2.1.4`. If you wish to cite SCS, please use the following: ``` @article{ocpb:16, author = {B. O'Donoghue and E. Chu and N. Parikh and S. Boyd}, title = {Conic Optimization via Operator Splitting and Homogeneous Self-Dual Embedding}, @@ -35,11 +37,11 @@ pages = {1042-1068}, url = {http://stanford.edu/~boyd/papers/scs.html}, } @misc{scs, author = {B. O'Donoghue and E. Chu and N. Parikh and S. Boyd}, - title = {{SCS}: Splitting Conic Solver, version 2.1.2}, + title = {{SCS}: Splitting Conic Solver, version 2.1.4}, howpublished = {\url{https://github.com/cvxgrp/scs}}, month = nov, year = 2019 } ``` @@ -135,11 +137,11 @@ conjugate gradients. The indirect solver can be run on either the cpu or gpu. The direct solver uses external numerical linear algebra packages: * [QDLDL](https://github.com/oxfordcontrol/qdldl) -* [AMD](http://www.cise.ufl.edu/research/sparse/). +* [AMD](https://github.com/DrTimothyAldenDavis/SuiteSparse). ### Using SCS in C Typing `make` at the command line will compile the code and create SCS libraries in the `out` folder. To run the tests execute: ```sh @@ -151,11 +153,11 @@ If `make` completes successfully, it will produce two static library files, `libscsdir.a`, `libscsindir.a`, and two dynamic library files `libscsdir.ext`, `libscsindir.ext` (where `.ext` extension is platform dependent) in the same folder. It will also produce two demo binaries in the `out` folder named `demo_socp_direct`, and `demo_socp_indirect`. If you have a GPU and have CUDA -installed, you can also execture `make gpu` to compile SCS to run on the GPU +installed, you can also execute `make gpu` to compile SCS to run on the GPU which will create additional libraries and demo binaries in the `out` folder corresponding to the gpu version. Note that the GPU version requires 32 bit ints, which can be enforced by compiling with `DLONG=0`. To use the libraries in your own source code, compile your code with the linker @@ -218,5 +220,51 @@ **BLAS / LAPACK install error** If you get an error like `cannot find -lblas` or `cannot find -llapack`, then you need to install blas and lapack and / or update your environment variables to point to the install locations. + +### Using SCS with cmake + +Thanks to [`CMake`](http://cmake.org) buildsystem, scs can be easily compiled +and linked by other `CMake` projects. To use the `cmake` buld system please run +the following commands: +``` +cd scs +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX:PATH=<custom-folder> ../ +make +make install +``` + +You may also want to compile the tests. In this case when you configure the project, +please call the following command +``` +cmake -DCMAKE_INSTALL_PREFIX:PATH=<custom-folder> -DBUILD_TESTING=ON ../ +make +ctest +``` + +By default the build-system will compile the library as `shared`. If you want to +compile it as `static`, please call the following command when you configure the +project +``` +cmake -DCMAKE_INSTALL_PREFIX:PATH=<custom-folder> -BUILD_SHARED_LIBS=OFF ../ +make +``` + +The `cmake` build-system exports two CMake targets called `scs::scsdir` and +`scs::scsindir` which can be imported using the `find_package` CMake command +and used by calling `target_link_libraries` as in the following example: +```cmake +cmake_minimum_required(VERSION 3.0) +project(myproject) +find_package(scs REQUIRED) +add_executable(example example.cpp) + +# To use the direct method +target_link_libraries(example scs::scsdir) + +# To use the indirect method +target_link_libraries(example scs::scsindir) +```