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)
+```