1 We provide two different systems to compile the code:
2 - the newer [CMake](@ref CMAKE) build system (recommended for new users)
3 - the traditional [Makefile](@ref MAKE) system.
5 Be aware that generated libraries and binaries of both systems might be different and incompatible.
6 For further information please refer to the [online documentation of SCIP](https://scipopt.org/doc/html/INSTALL.php).
8 The easiest way to install SCIP is to use the SCIP Optimization Suite, which contains SCIP, SoPlex, and ZIMPL.
9 For that we refer to the `README.md` file of the SCIP Optimization Suite (in case of the SCIP Optimization Suite there is no need to specify any directories, the compiling process is fully automated).
11 Building SCIP using CMake {#CMAKE}
12 ==================================
14 [CMake](https://cmake.org/) is a build system generator that can create, e.g., Makefiles for UNIX and Mac or Visual Studio project files for Windows.
16 CMake provides an [extensive documentation](https://cmake.org/cmake/help/latest/manual/cmake.1.html) explaining available features and use cases as well as an [FAQ section](https://cmake.org/Wiki/CMake_FAQ).
17 It's recommended to use the latest stable CMake version available. `cmake --help` is also a good first step to see available options and usage information.
19 Windows and platform independent build instructions
20 ---------------------------------------------------
22 To build SCIP you may use the CMake GUI to specify the path to SCIP and the desired location for the build.
23 Available options are listed and can be modified to suit your needs.
24 After the configuration step is done, open the generated Visual Studio solution file and compile it.
26 Alternatively, you may use the command line to configure and build SCIP by creating a `build` directory and then building the configuration:
29 cmake -Bbuild -H. [-DSOPLEX_DIR=/path/to/soplex]
30 cmake --build build --config Release [Debug]
33 Command line instructions (Linux, macOS)
34 ----------------------------------------
36 Compiling SCIP directly can be done as follows:
39 tar xvzf scip-x.y.z.tgz # unpack the tarball
40 cd scip-x.y.z # change into the directory
41 mkdir build # create a new directory
42 cd build # change directories
43 cmake .. -DCMAKE_INSTALL_PREFIX=<install/dir> [-DSOPLEX_DIR=/path/to/soplex] # configure the build
44 make # start compiling SCIP
45 make check # (recommended) check build
46 make install # (optional) install SCIP executable, library, and headers
49 Note: For a full ctest run `ctest` instead of `make check` after compilation.
51 CMake checks for available third-party libraries like GMP or ZLIB and sets up the configuration accordingly.
53 Modifying a CMake configuration
54 -------------------------------
56 CMake uses an out-of-source build, i.e., compiled binaries and object files are separated from the source tree and located in another directory.
57 Usually this directory is called `build` or `debug` or whatever you prefer.
58 From within this directory, run `cmake <path/to/SCIP>` to configure your build, followed by `make` to compile the code according to the current configuration (this assumes that you chose Linux Makefiles as CMake Generator).
59 By default, SCIP searches for Soplex as LP solver.
60 If SoPlex is not installed systemwide, the path to a CMake build directory of SoPlex must be specified (ie one that contains "soplex-config.cmake").
61 Alternatively, a different LP solver can be specified with the `LPS` variable.
63 Afterwards, successive calls to `make` are going to recompile modified source code, without requiring another call to `cmake`.
64 The initial configuration step checks your environment for available third-party libraries and packages and sets up the configuration accordingly, e.g., disabling support for GMP if not installed.
66 The generated executable and libraries are put in directories `bin` and `lib` respectively and will simply be named `scip` or `libscip.so`.
67 This is different from the naming convention of the previous Makefile setup that appended the configuration details like OS and third party dependencies directly to the name of the binary or library.
68 The CMake setup tries to follow the established Linux/UNIX compilation conventions to facilitate the use of the libraries in other applications.
69 The previously generated sub-libraries like `liblpi.so` or `libobjscip.so` are not created by default anymore.
70 They can be built using the respective targets `liblpi`, `libobjscip`, etc.
71 The main library `libscip.so` will contain all SCIP sources and won't have dependencies to the other sub-libs.
73 There are several options that can be passed to the `cmake <path/to/SCIP>` call to modify how the code is built.
74 For all of these options and parameters you have to use `-D<Parameter_name>=<value>`.
75 Following a list of available options, for the full list run
78 cmake </path/to/SCIP/> -LH
80 and set them by running `cmake .. -D<option>=<value>`.
81 Options can be chained together or be specified in subsequent calls to cmake.
82 The existing configuration will be updated or extended.
83 e.g., `cmake </path/to/SCIP> -DSOPLEX_DIR=<path/to/SoPlex/build/or/install>`.
85 | CMake option | Available values | Makefile equivalent | Remarks |
86 |------------------------|------------------------------------|----------------------------|--------------------------------------------------------------------|
87 | `CMAKE_BUILD_TYPE` | `Release`, `Debug`, ... | `OPT=[opt, dbg]` | |
88 | `GMP` | `on`, `off` | `GMP=[true, false]` | specify `GMP_DIR` if not found automatically |
89 | `IPOPT` | `on`, `off` | `IPOPT=[true,false]` | requires IPOPT version >= 3.12.0; specify `IPOPT_DIR` if not found automatically |
90 | `LPS` | `spx`, `cpx`, `grb`, `xprs`, ... | `LPS=...` | specify `SOPLEX_DIR`, `CPLEX_DIR`, `MOSEK_DIR`, ... if LP solver is not found automatically |
91 | `SYM` | `bliss`, `none` | -- | for bliss, specify `BLISS_DIR` |
92 | `WORHP` | `on`, `off` | `WORHP=[true,false]` | should worhp be linked; specify `WORHP_DIR` if not found automatically |
93 | `ZIMPL` | `on`, `off` | `ZIMPL=[true, false]` | specify `ZIMPL_DIR` if not found automatically |
94 | `READLINE` | `on`, `off` | `READLINE=[true, false]` | |
95 | `..._DIR` | `<custom/path/to/.../package>` | -- | e.g. `IPOPT_DIR`, `CPLEX_DIR`, `WORHP_DIR`, `Readline_DIR` ... |
96 | `CMAKE_INSTALL_PREFIX` | `<path>` | `INSTALLDIR=<path>` | |
97 | `SHARED` | `on`, `off` | `SHARED=[true, false]` | |
98 | `CXXONLY` | `on`, `off` | -- | use a C++ compiler for all source files |
99 | `COVERAGE` | `on`, `off` | -- | use with gcc, lcov, gcov in **debug** mode |
100 | `COVERAGE_CTEST_ARGS` | ctest argument string | -- | see `ctest --help` for arguments |
101 | `DEBUGSOL` | `on`, `off` | `DEBUGSOL=[true,false]` | specify a debugging solution by setting the "misc/debugsol" parameter of SCIP |
102 | `LPSCHECK` | `on`, `off` | `LPSCHECK=[true,false]` | double check SoPlex results with CPLEX |
103 | `NOBLKMEM` | `on`, `off` | `NOBLKMEM=[true,false]` | |
104 | `NOBUFMEM` | `on`, `off` | `NOBUFMEM=[true,false]` | |
105 | `NOBLKBUFMEM` | `on`, `off` | `NOBLKBUFMEM=[true,false]` | |
106 | `MT` | `on`, `off` | | use static runtime libraries for Visual Studio compiler on Windows |
107 | `PARASCIP` | `on`, `off` | `PARASCIP=[true,false]` | thread safe compilation |
108 | `SANITIZE_...` | `on`, `off` | -- | enable sanitizer in debug mode if available |
109 | `TPI` | `tny`, `omp`, `none` | `TPI=[tny,omp,none]` | enable task processing interface required for concurrent solver |
111 Parameters can be set all at once or in subsequent calls to `cmake` - extending or modifying the existing configuration.
116 There is an extensive test suite written for [CTest]("https://cmake.org/cmake/help/latest/manual/ctest.1.html)
117 that may take a while to complete.
118 To perform a quick test to see whether the compilation was really successful you may run `make check`.
119 To see all available tests, run
125 and to perform a memory check, run
131 If [Criterion](https://criterion.readthedocs.io/en/master/) is installed (set custom path with `-DCRITERION_DIR=<path>`) the target `unittests` can be used to compile and run the available unit tests.
133 A coverage report for the entire test suite can be generated.
134 This requires a modification of the compilation process.
135 Two variables govern the report generation, `COVERAGE` and `COVERAGE_CTEST_ARGS`.
136 It is recommended to use the Debug build type.
139 cmake </path/to/SCIP> -DCOVERAGE=on -DCOVERAGE_CTEST_ARGS="-R MIP -E stein -j4" -DCMAKE_BUILD_TYPE=Debug
142 In this example, coverage is enabled in combination with the build type Debug.
143 In addition, only the coverage for tests with "MIP" in the name are run, excluding those that have "stein" in the name.
144 The tests are performed in parallel using 4 cores.
146 Use the `coverage` target, e.g., `make coverage`, to build the coverage report.
147 The generated report can be found under "coverage/index.html".
152 There are several further targets available, which can be listed using `make help`.
153 For instance, there are some examples that can be built with `make examples` or by specifying a certain one: `make <example-name>`.
155 | CMake target | Description | Requirements |
156 |-----------------|-------------------------------------------------------|---------------------------------------|
157 | scip | build SCIP executable | |
158 | applications | build executables for all applications | |
159 | examples | build executables for all examples | |
160 | unittests | build unit tests | the Criterion package |
161 | all_executables | build all of the above | |
162 | libscip | build the SCIP library | |
163 | install | install SCIP | |
164 | coverage | run the test suite and create a coverage report | build flag `-DCOVERAGE=on` |
165 | liblpi | build the LPI library | |
166 | libnlpi | build the NLPI library | |
167 | libobjscip | build the ObjSCIP library for the C++ wrapper classes | |
169 Building SCIP using the Makefile system {#MAKE}
170 ===============================================
172 **Please note, that the Makefile system is not actively maintained anymore.
173 If possible, please use \ref CMAKE "the cmake system".**
175 For Linux and Mac, reading the section "Brief installation description" should usually be enough.
176 If this is not the case, you can find the "Detailed installation description" below as well as some examples.
178 We recommend using GCC version 4.8 or later.
180 Brief installation description
181 ------------------------------
183 The easiest way to install \SCIP is to use the \SCIP Optimization Suite which contains \SCIP, SoPlex, and ZIMPL.
184 For that we refer to the INSTALL file of the \SCIP Optimization Suite (main advantage: there is no need
185 to specify any directories, the compiling process is fully automated).
187 Compiling SCIP directly can be done as follows:
190 tar xvzf scip-x.y.z.tgz # unpack the tarball
191 cd scip-x.y.z # change into the directory
192 make # start compiling SCIP
193 make test # (recommended) check your SCIP installation
194 make install INSTALLDIR=/path/to/install/dir # (optional) install the header, libraries, and binary
197 On your first compilation you will be asked for some soft-link targets, depending on the LP solver you want to use.
198 Usually, SCIP needs the following information
199 a. the directory where the include files of the LP solver are located
200 b. the library file(s) `lib*.a` or/and `lib*.so`
202 Beside that, SCIP needs similar soft-link targets for ZIMPL
203 a. the directory where the include files of ZIMPL are located
204 b. the library file(s) `lib*.a` or/and `lib*.so`
206 You will need either the `.a` or the `.so` files and can skip the others by just pressing return.
208 The most common compiling issue is that some libraries are missing on your system or that they are outdated.
209 SCIP by default requires the following packages (with usual names for Linux systems in parentheses):
213 - readline (libreadline-dev), and
214 - ncurses (libncurses-dev)
216 Note that under Linux-based systems, you need to install the developer-versions of gmp/zlib/readline, in order to also have the header-files available.
218 If you are not able or do not want to install these packages, try compiling with:
220 make ZLIB=false READLINE=false GMP=false.
223 Detailed installation description
224 ---------------------------------
226 Here is what you have to do to get SCIP running:
228 ### 1. Compile the library and the solver program
230 In your SCIP main directory, enter `make [options]` with the following options:
232 The following settings are supported:
234 | parameter and default | options | description |
235 |-----------------------|----------------------|--------------------------------------------------------------------------------------------------|
236 | `ARCH` | `sparc`, `x86`, `x86_64`, `mips`, `hppa`, `ppc`, `pwr4`, ... | the architecture: try to autodetect |
237 | `COMP=gnu` | `clang`, `intel` | Use Gnu, Clang or Intel compiler. |
238 | `EXPRINT=cppad` | `none` | to use CppAD as expressions interpreter |
239 | `FILTERSQP=false` | `true` | to enable or disable FilterSQP interface |
240 | `GAMS=false` | `true` | to disable or enable reading of GAMS model files (needs GAMS; only for models that do one solve) |
241 | `GMP=true` | `false` | to enable or disable GMP library for exact counting and Zimpl support |
242 | `IPOPT=false` | `true` | to disable or enable IPOPT interface (needs IPOPT >= 3.12) |
243 | `LPS=spx` | `spx1`, `cpx`, `grb`, `xprs`, `msk`, `clp`, `glop`, `qso`, `none` | determines the LP-Solver, should be installed seperately. Options to use SoPlex (> version 2.0), SoPlex (>= version 1.4), CPLEX, Gurobi, XPRESS, MOSEK, CLP, Glop, QSopt as LP solver, no LP solver |
244 | `LPSOPT=opt` | `dbg`, `opt-gccold` | Choose the debug or optimized version (or old GCC optimized) version of the LP-solver (currently only available for SoPlex and CLP). |
245 | `NOBLKBUFMEM=true` | `false` | Turns the internal SCIP block and buffer memory off or on. This way the code can be checked by valgrind or similar tools. |
246 | `NOBLKMEM=true` | `false` | Turns the internal SCIP block memory off or on. |
247 | `NOBUFMEM=true` | `false` | Turns the internal SCIP buffer memory off or on. |
248 | `OPT=opt` | `dbg`, `perf` | to use optimized, debug, performance (only with Gnu compiler) analysis compilation mode. `dbg` turns on debug mode. This enables asserts and avoids macros for several function in order to ease debugging. |
249 | `OSTYPE` | `linux`, `darwin`, `cygwin`, `irix`, `windows`, `mingw`, ... | the operating system: try to autedetect |
250 | `PAPILO=false` | `true` | to disable or disable the MILP presolver based on the presolving library PaPILO |
251 | `READLINE=true` | `false` | to enable or disable readline library for interactive shell |
252 | `SHARED=false` | `true` | to suppress or create shared libraries. (only Gnu compiler) |
253 | `SYM=none` | `bliss` | to disable symmetry handling in mixed integer programs or compute symmetries with bliss |
254 | `TPI=none` | `omp`, `tny` | to disable the task processing interface or use it with the openmp or tinycthreads interface for concurrent solves |
255 | `VERBOSE=false` | `true` | to suppress or display of compiler and linker invocations |
256 | `WORHP=false` | `true` | to disable or enable WORHP interface (needs WORHP >= 2.00) |
257 | `ZIMPL=true` | `false`, `auto` | to enable or disable ZIMPL file reader (needs ZIMPL and GMP to be installed) |
258 | `ZLIB=true` | `false` | to enable or disable zlib for reading of compressed files |
260 For example, if you want to install SCIP on a Linux system with a x86 processor
261 using the gnu compiler in debug mode, using Soplex version as LP solver,
262 and neither an expressions interpreter nor symmetry handling techniques or multi-threading,
263 you would have the following names:
271 On some machines, you should use `gmake` instead of `make`.
273 On your first compilation you will be asked for some soft-link targets, depending on the LP solver you want to use.
274 Usually, SCIP needs the following information
275 - the directory where the include files of the LP solver
276 - the library file(s) `lib*.a` or/and `lib*.so`
277 You will need either the `.a` or the `.so` files and can skip the others by just pressing return.
279 On MAC systems, GMP is often not installed in the library and include paths, e.g. in `/sw/include` and `/sw/lib`.
280 In this case, you have to add the paths explicitly.
281 In the above example add the settings:
284 USRFLAGS=-I/sw/include USRCPPFLAGS=-I/sw/include USRCFLAGS=-I/sw/include USRLDFLAGS=-L/sw/lib.
287 ### 2. Installing SCIP
289 After compiling you can install the headers, the libraries, and the binay.
290 You do that by running the command:
293 make install INSTALLDIR=<directory>
297 - `INSTALLDIR=` to install in current directory (default)
298 - `INSTALLDIR=/usr/local` to install the headers (`/usr/local/include/`), the libraries (`/usr/local/lib/`), and binary (`/usr/local/bin/`) in the directory `/usr/local`
300 For un-installing SCIP there exist the target `uninstall` which can be used in the same way as `install`.
302 ### 3. Instructions for manually creating the soft-links, if the query script fails:
304 Create necessary soft-links in the `lib/static` and `lib/include/` subdirectories of SCIP:
306 #### a) to use SOPLEX (Version >= 1.4.0)
309 ln -s <path to SOPLEX' *.h files> <path to SCIP>/lib/include/spxinc
310 ln -s <file libsoplex.[...].a> <path to SCIP>/lib/static/libsoplex.$(OSTYPE).$(ARCH).$(COMP).a
312 For each operating system and architecture to use
315 ln -s ../soplex/lib/libsoplex.linux.x86_64.gnu.opt.a lib/static/libsoplex.linux.x86_64.gnu.a
317 Warning! The `.opt` in the name of the SOPLEX library does not appear in the name of the soft-link.
319 #### b) to use CPLEX (Version >= 10.0)
322 ln -s <path to directory of cplex.h> <path to SCIP>/lib/include/cpxinc
323 ln -s <file libcplex.a> <path to SCIP>/lib/static/libcplex.$(OSTYPE).$(ARCH).$(COMP).a
325 for each operation system and architecture to use
328 ln -s /cplex121/include/ilcplex lib/include/cpxinc
329 ln -s /cplex121/lib/x86-64_debian4.0_4.1/static_pic/libcplex.a lib/static/libcplex.linux.x86.gnu.a
331 and replace the paths with your installation location.
333 #### c) to use Gurobi
336 ln -s <path to the include directory of Gurobi> <path to SCIP>/lib/include/grbinc
337 ln -s <file libgurobi81.so> <path to SCIP>/lib/shared/libgurobi.$(OSTYPE).$(ARCH).$(COMP).so
342 ln -s /gurobi81/linux64/include lib/include/grbinc
343 ln -s /gurobi81/linux64/lib/libgurobi81.so lib/shared/libgurobi.linux.x86_64.gnu.so
345 and replace the paths with your installation location.
347 #### d) to use XPRESS
350 ln -s <path to directory of xprs.h> <path to SCIP>/lib/include/xprsinc
351 ln -s <file libxprs.a> <path to SCIP>/lib/static/libxprs.$(OSTYPE).$(ARCH).$(COMP).a
353 for each operation system and architecture to use
356 ln -s /xpressmp/include lib/include/xprsinc
357 ln -s /xpressmp/lib/libxprs.a lib/static/libxprs.linux.x86.gnu.a
359 and replace the paths with your installation location.
364 ln -s <path to directory of mosek.h> <path to SCIP>/lib/include/mskincn
365 ln -s <file libmosek.so> <path to SCIP>/lib/shared/libmosek.$(OSTYPE).$(ARCH).$(COMP).so
367 for each operation system and architecture to use
370 ln -s /mosek/8/tools/platform/linux64x86/h lib/include/mskinc
371 ln -s /mosek/8/tools/platform/linux64x86/bin/libmosek64.so lib/shared/libmosek.linux.x86_64.gnu.so
373 since MOSEK is a shared library, make sure your LD_LIBRARY_PATH contains `<path to SCIP>/lib/shared`
378 ln -s <path to Clp main directory> <path to SCIP>/lib/include/libclp.$(OSTYPE).$(ARCH).$(COMP).$(LPSOPT)
380 for each operating system and architecture to use
383 ln -s /Coin-Clp lib/include/libclp.linux.x86.gnu.opt
385 and replace the paths with your installation location.
390 ln -s <path to OR-Tools main directory> <path to SCIP>/shared/ortools
395 ln -s /ortools lib/shared/ortools
397 and replace the paths with your installation location.
401 Use ZIMPL as additional file reader for reading *.zpl files
404 mkdir <path to SCIP>/lib/include/zimplinc
405 ln -s <path to ZIMPL's *.h files> <path to SCIP>/lib/include/zimplinc/zimpl
406 ln -s <file libzimpl-<version>.<options>.a> <path to SCIP>/lib/static/libzimpl.$(OSTYPE).$(ARCH).$(COMP).a
408 Note that ZIMPL needs the GNU multiprecision library (GMP) to be installed on your system.
410 #### i) to use IPOPT as NLP solver
413 ln -s <path to IPOPT installation> <path to SCIP>/lib/ipopt.$(OSTYPE).$(ARCH).$(COMP).$(IPOPTOPT)
414 (e.g. `cd scip; ln -s /Ipopt lib/shared/ipopt.linux.x86.gnu.opt
416 The path to the IPOPT installation is the path under where the Ipopt build has been installed.
417 It should contain the directories `include/coin` with the Ipopt header files, the directory lib with the Ipopt libraries, and the directory `share/coin/doc/Ipopt` with the `ipopt_addlibs_cpp.txt` file.
419 #### j) to use WORHP as NLP solver
422 ln -s <path to WORHP installation> <path to SCIP>/lib/shared/worhp.$(OSTYPE).$(ARCH).$(COMP).$(WORHPOPT)
427 ln -s /Worhp lib/shared/worhp.linux.x86.gnu.opt
429 The path to the WORHP installation is the path under where the Worhp build has been installed.
430 It should contain the directories include/worhp with the WORHP header files and the directory lib with the WORHP libraries.
432 #### k) to use FilterSQP as NLP solver
435 ln -s <path to FilterSQP library> <path to SCIP>/lib/libfiltersqp.$(OSTYPE).$(ARCH).$(COMP).a
436 ln -s <path to BQPD library> <path to SCIP>/lib/libbqpd.$(OSTYPE).$(ARCH).$(COMP).a
438 Make sure to replace the paths with your installation location.
443 ln -s <path to GAMS system directory> <path to SCIP>/lib/shared/gams.$(OSTYPE).$(ARCH).$(COMP)
445 Make sure to replace the paths with your installation location.
450 ln -s <path to bliss *.hh files> <path to SCIP>/lib/include/bliss
451 ln -s <file libbliss.[...].a> <path to SCIP>/lib/static/libbliss.$(OSTYPE).$(ARCH).$(COMP).a
453 for each operation system and architecture to use
456 ln -s ../bliss lib/include/bliss
457 ln -s ../bliss/libbliss.a lib.static/libbliss.linux.x86_64.gnu.a
459 Make sure to replace the paths with your installation location.
463 To run SCIP enter `bin/scip.$(OSTYPE).$(ARCH).$(COMP).$(OPT).$(LPS)`
464 (e.g. `bin/scip.linux.x86.gnu.opt.spx`) or just `bin/scip` for the last compiled version
466 ### 5. Generate documentation
468 To generate the documentation, you need to have doxygen installed, and enter `make doc`.
470 ### 6. Check Code with lint
472 To check the code with lint, you need to have flexelint installed, and enter `make lint`.
474 ### 7. Run a short test
476 To run a short test, enter `make [options] test` with the same options with which you compiled SCIP in step 1.
477 If you use `EXPRINT=none`, a few MINLP instances might be aborted.
478 If you use `LPS=none`, many instances will fail or take ages to be solved.
482 The \SCIP makefile supports several targets (used via `make ... "target"`):
484 | target | description|
486 | `all` | (or no target) Build \SCIP library and binary. |
487 | `links` | Reconfigures the links in the "lib" directory. |
488 | `doc` | Creates documentation in the "doc" directory. |
489 | `clean` | Removes all object files. |
490 | `depend` | Updates dependencies files. This is only needed if you add checks for preprocessor-defines `WITH_*` or NPARASCIP in source files. |
491 | `check` | or `test` Runs the check script. |
492 | `lint` | Statically checks the code via flexelint. The call produces the file `lint.out` which contains all the detected warnings. |
493 | `tags` | Generates tags which can be used in the editor **emacs** and **xemacs**. |
495 The \SCIP makefiles are structured as follows.
497 - `Makefile` This is the basic makefile in the \SCIP root directory. It loads
498 additional makefile information depending on the parameters set.
499 - `make/make.project` This file contains definitions that are useful for all codes
500 that use \SCIP, for instance, the example.
501 - `make.<sys>.<machine>.<compiler>.<dbg|opt|prf|opt-gccold>` These file contain system/compiler specific
502 definitions. If you have an unsupported compiler, you can copy one of these and modify it
505 If your platform or compiler is not supported by \SCIP you might try and copy one of the existing
506 makefiles in the `make` directory and modify it. If you succeed, we are always
507 interested in including more Makefiles into the system.
512 ### Example 1 (defaults: SoPlex, with ZIMPL support):
514 Typing `make` uses SoPlex as LP solver and includes support for the modeling language ZIMPL.
515 You will be asked the following questions on the first call to `make` (example answers are already given):
518 make[1]: Entering directory '/sw/scip'
520 ** creating softlinks: LPS=spx OSTYPE=linux ARCH=x86 COMP=gnu SUFFIX= ZIMPL=true ZIMPLOPT=opt IPOPT=false IPOPTOPT=opt EXPRINT=cppad
522 ** creating directory 'lib/zimplinc'
523 ** missing soft-link 'lib/spxinc'
524 ** enter soft-link target file or directory for 'lib/spxinc' (return if not needed): /sw/soplex/src
525 -> creating softlink 'lib/spxinc' -> '/sw/soplex/src'
527 ** missing soft-link 'lib/libsoplex.linux.x86.gnu.a'
528 ** enter soft-link target file or directory for 'lib/libsoplex.linux.x86.gnu.a' (return if not needed): /sw/soplex/lib/libsoplex.linux.x86.gnu.opt.a
529 -> creating softlink 'lib/libsoplex.linux.x86.gnu.a' -> '/sw/soplex/lib/libsoplex.linux.x86.gnu.opt.a'
531 ** missing soft-link 'lib/libsoplex.linux.x86.gnu.so'
532 ** this soft-link is not necessarily needed since 'lib/libsoplex.linux.x86.gnu.a' already exists - press return to skip
533 ** enter soft-link target file or directory for 'lib/libsoplex.linux.x86.gnu.so' (return if not needed):
534 -> skipped creation of softlink 'lib/libsoplex.linux.x86.gnu.so'. Call 'make links' if needed later.
536 ** missing soft-link 'lib/zimplinc/zimpl'
537 ** enter soft-link target file or directory for 'lib/zimplinc/zimpl' (return if not needed): /sw/zimpl/src
538 -> creating softlink 'lib/zimplinc/zimpl' -> '/sw/zimpl/src'
540 ** missing soft-link 'lib/libzimpl.linux.x86.gnu.a'
541 ** enter soft-link target file or directory for 'lib/libzimpl.linux.x86.gnu.a' (return if not needed): /sw/zimpl/lib/libzimpl.linux.x86.gnu.opt.a
542 -> creating softlink 'lib/libzimpl.linux.x86.gnu.a' -> '/sw/zimpl/lib/libzimpl.linux.x86.gnu.opt.a'
544 ** missing soft-link 'lib/libzimpl.linux.x86.gnu.so'
545 ** this soft-link is not necessarily needed since 'lib/libzimpl.linux.x86.gnu.a' already exists - press return to skip
546 ** enter soft-link target file or directory for 'lib/libzimpl.linux.x86.gnu.so' (return if not needed):
547 -> skipped creation of softlink 'lib/libzimpl.linux.x86.gnu.so'. Call 'make links' if needed later.
549 make[1]: Leaving directory '/sw/scip'
552 ### Example 2 (CPLEX, no ZIMPL):
555 Typing `make LPS=cpx ZIMPL=false` uses CPLEX as LP solver.
556 You will be asked the following questions on the first call to `make` (example answers are already given):
559 make[1]: Entering directory '/sw/scip'
561 ** creating softlinks: LPS=cpx OSTYPE=linux ARCH=x86 COMP=gnu SUFFIX= ZIMPL=false
563 ** missing soft-link 'lib/cpxinc'
564 ** enter soft-link target file or directory for 'lib/cpxinc' (return to skip): /sw/cplex/include/ilcplex
565 -> creating softlink 'lib/cpxinc' -> '/sw/cplex/include/ilcplex'
567 ** missing soft-link 'lib/libcplex.linux.x86.gnu.a'
568 ** enter soft-link target file or directory for 'lib/libcplex.linux.x86.gnu.a' (return to skip): /sw/cplex/lib/x86_rhel4.0_3.4/static_pic/libcplex.a
569 -> creating softlink 'lib/libcplex.linux.x86.gnu.a' -> '/sw/cplex/lib/x86_rhel4.0_3.4/static_pic/libcplex.a'
571 ** missing soft-link 'lib/libcplex.linux.x86.gnu.so'
572 ** enter soft-link target file or directory for 'lib/libcplex.linux.x86.gnu.so' (return to skip):
573 -> skipped creation of softlink 'lib/libcplex.linux.x86.gnu.so'. Call 'make links' if needed later.
575 make[1]: Leaving directory '/sw/scip'
578 ### Example 3 (CLP, IPOPT, no ZIMPL):
580 Typing `make LPS=clp ZIMPL=false IPOPT=true` uses CLP as LP solver, and activates the interface to IPOPT.
581 You will be asked the following questions on the first call to `make` (example answers are already given):
584 make[1]: Entering directory '/sw/scip'
586 - Current settings: LPS=clp OSTYPE=linux ARCH=x86_64 COMP=gnu SUFFIX= ZIMPL=false ZIMPLOPT=opt IPOPT=true IPOPTOPT=opt EXPRINT=cppad
588 * SCIP needs some softlinks to external programs, in particular, LP-solvers.
589 * Please insert the paths to the corresponding directories/libraries below.
590 * The links will be installed in the 'lib' directory.
591 * For more information and if you experience problems see the 'INSTALL.md' file.
593 -> 'clp.*' is a directory containing the Clp installation, i.e., 'clp.*/include/coin/ClpModel.hpp' should exist.
594 -> 'ipopt.*' is a directory containing the ipopt installation, i.e., 'ipopt.*/include/coin/IpIpoptApplication.hpp', 'ipopt.*/lib/libipopt*', ... should exist.
596 - preparing missing soft-link 'lib/clp.linux.x86_64.gnu.opt':
597 > Enter soft-link target file or directory for 'lib/clp.linux.x86_64.gnu.opt' (return if not needed):
599 -> creating softlink 'lib/clp.linux.x86_64.gnu.opt' -> '/sw/Clp-1.11/build'
601 - preparing missing soft-link 'lib/ipopt.linux.x86_64.gnu.opt':
602 > Enter soft-link target file or directory for 'lib/ipopt.linux.x86_64.gnu.opt' (return if not needed):
603 > /sw/ia64_lx26/ipopt-3.12.0/
604 -> creating softlink 'lib/ipopt.linux.x86_64.gnu.opt' -> '/sw/ia64_lx26/ipopt-3.12.0/'
606 make[1]: Leaving directory '/sw/scip'
609 ### Example 4 (default: SoPlex, IPOPT, WORHP, FILTERSQP):
611 Typing `make IPOPT=true WORHP=true FILTERSQP=true` uses SoPlex as LP solver, and activates the interfaces to IPOPT, WORHP, and FilterSQP.
612 You will be asked the following questions on the first call to `make` (example answers are already given):
615 - Current settings: LPS=spx2 OSTYPE=linux ARCH=x86_64 COMP=gnu SHARED=false SUFFIX= ZIMPL=false ZIMPLOPT=opt IPOPT=true IPOPTOPT=opt FILTERSQP=true EXPRINT=cppad GAMS=false
617 * SCIP needs some softlinks to external programs, in particular, LP-solvers.
618 * Please insert the paths to the corresponding directories/libraries below.
619 * The links will be installed in the 'lib/include' and 'lib/static' directories.
620 * For more information and if you experience problems see the 'INSTALL.md' file.
622 -> 'spxinc' is the path to the SoPlex 'src' directory, e.g., '<SoPlex-path>/src'.
623 -> 'libsoplex.*' is the path to the SoPlex library, e.g., '<SoPlex-path>/lib/libsoplex.linux.x86.gnu.opt.a'
624 -> 'ipopt.linux.x86_64.gnu.opt' is a directory containing the ipopt installation, i.e., 'ipopt.linux.x86_64.gnu.opt/include/coin/IpIpoptApplication.hpp', 'ipopt.linux.x86_64.gnu.opt/lib/libipopt*', ... should exist.
625 -> 'libfiltersqp.linux.x86_64.gnu.*' is the path to the filterSQP library.
626 -> 'libbqpd.linux.x86_64.gnu.*' is the path to the BQPD library.
627 -> 'worhp.linux.x86_64.gnu.opt' is a directory containing the WORHP installation, i.e., 'worhp.linux.x86_64.gnu.opt/include/worhp/worhp.h' should exist.
630 > Enter soft-link target file or directory for 'lib/static/ipopt.linux.x86_64.gnu.opt' (return if not needed):
632 -> creating softlink 'lib/static/ipopt.linux.x86_64.gnu.opt' -> '/sw/ipopt-3.12.5'
634 > Enter soft-link target file or directory for 'lib/static/libfiltersqp.linux.x86_64.gnu.a' (return if not needed):
636 -> creating softlink 'lib/static/libfiltersqp.linux.x86_64.gnu.a' -> '/sw/libfiltersqp.a'
638 > Enter soft-link target file or directory for 'lib/static/libbqpd.linux.x86_64.gnu.a' (return if not needed):
640 -> creating softlink 'lib/static/libbqpd.linux.x86_64.gnu.a' -> '/sw/libbqpd.a'
642 > Enter soft-link target file or directory for 'lib/static/worhp.linux.x86_64.gnu.opt' (return if not needed):
644 -> creating softlink 'lib/static/worhp.linux.x86_64.gnu.opt' -> '/sw/worhp-2.0'
646 make[1]: Leaving directory '/sw/scip'
649 Note on how to (locally) install CLP:
650 - create a target directory for the installation, e.g. `clp-build` (this is the directory SCIP has to link to)
651 - from within `clp-build`, run the `configure` script of coin-Clp, followed by `make install`
653 If you ever need to modify the soft-link targets, delete the soft-links in the `lib/` subdirectory and enter `make links` to generate them again.
655 After the soft-links have been created, the compilation of the source files should start.
657 ### Example 5 (default: SoPlex, SYM):
659 Typing `make SYM=bliss` uses SoPlex as LP solver, and activates the symmetry handling routines of SCIP.
660 Symmetry is computed by using the graph automorphism code bliss.
661 You will be asked the following questions on the first call to `make` (example answers are already given):
664 - Current settings: 'SYM=bliss'
666 * SCIP needs some softlinks to external programs, in particular, LP-solvers.
667 * Please insert the paths to the corresponding directories/libraries below.
668 * The links will be installed in the 'lib/include' and 'lib/static' directories.
669 * For more information and if you experience problems see the 'INSTALL.md' file.
671 -> 'cpxinc' is the path to the CPLEX 'include' directory, e.g., '<CPLEX-path>/include/ilcplex'.
672 -> 'libcplex.*.a' is the path to the CPLEX library, e.g., '<CPLEX-path>/lib/x86-64_linux/static_pic/libcplex.a'
673 -> 'libcplex.*.so' is the path to the CPLEX library, e.g., '<CPLEX-path>/bin/x86-64_linux/libcplex1263.so'
674 -> 'blissinc' is the path to the BLISS directory, e.g., '<BLISS-path>'.
675 -> 'libbliss.*.a' is the path to the BLISS library, e.g., '<BLISS-path>/libbliss.a'
676 -> 'libbliss.*.so' is the path to the BLISS library, e.g., '<BLISS-path>/libbliss.so'
678 > Enter soft-link target file or directory for 'lib/include/bliss' (return if not needed):
680 -> creating softlink 'lib/include/bliss' -> '/sw/bliss'
682 > Enter soft-link target file or directory for 'lib/static/libbliss.linux.x86_64.gnu.a' (return if not needed):
683 > /sw/bliss/libbliss.a
684 -> creating softlink 'lib/static/libbliss.linux.x86_64.gnu.a' -> '/sw/bliss/libbliss.a'
686 make[1]: Leaving directory '/sw/scip'
689 Note on how to (locally) install bliss:
690 - create a target directory for the installation
691 - compile the bliss code within this directory
693 If you ever need to modify the soft-link targets, delete the soft-links in the `lib/` subdirectory and enter `make links` to generate them again.
695 After the soft-links have been created, the compilation of the source files should start.
700 If the soft-link query script does not work on your machine, read step 2 for instructions on manually creating the soft-links.
702 ### No rule to make target lib/???
703 If you get an error message of the type
705 make: *** No rule to make target 'lib/???', needed by 'obj/O.linux.x86.gnu.opt/lib/scip/???.o'. Stop.
707 the corresponding soft-link was not created or points to a wrong location.
708 Check the soft-link targets in the `lib/include`, `lib/static`, `lib/shared` subdirectories.
709 Try to delete all soft-links from those directories and call `make links` to generate them again.
710 If this still fails, read step 2 for instructions on manually creating the soft-links.
712 ### No rule to make target make/make
714 If you get an error message of the type
716 make: *** No rule to make target 'make/make.?.?.?.?.?'. Stop.
718 the corresponding machine dependent makefile for your architecture and compiler is missing.
719 Create one of the given name in the `make/` subdirectory.
720 You may take `make/make.linux.x86.gnu.opt` or any other file in the make subdirectory as example.
722 ### No support for remove_history call
724 The readline library seems to differ slightly on different OS distributions.
725 Some versions do not support the `remove_history()` call.
726 In this case, you have to either add `-DNO_REMOVE_HISTORY` to the FLAGS in the appropriate `make/make.*` file, or to compile with `make USRFLAGS=-DNO_REMOVE_HISTORY`.
727 Make sure, the file `src/scip/dialog.c` is recompiled.
728 If this doesn't work either, disable the readline library with `make READLINE=false`.
730 ### No support for sigaction method
732 On some systems, the `sigaction()` method is not available.
733 In this case, you have to either add `-DNO_SIGACTION` to the FLAGS in the appropriate `make/make.*` file, or to compile with `make USRFLAGS=-DNO_SIGACTION`.
734 Make sure, the file `src/scip/interrupt.c` is recompiled.
736 ### No support for rand_r method
738 On some systems, the `rand_r()` method is not available.
739 In this case, you have to either add `-DNO_RAND_R` to the FLAGS in the appropriate `make/make.*` file, or to compile with `make USRFLAGS=-DNO_RAND_R`.
740 Make sure, the file `src/scip/misc.c` is recompiled.
742 ### No support for strtok_r method
744 On some systems, the `strtok_r()` method is not available.
745 In this case, you have to either add `-DNO_STRTOK_R` to the FLAGS in the appropriate `make/make.*` file, or to compile with `make USRFLAGS=-DNO_STRTOK_R`.
746 Make sure, the file `src/scip/misc.c` is recompiled.
748 ### No support for strerror_r method
750 On some systems, the `strerror_r()` method is not available.
751 In this case, you have to either add `-DNO_STRERROR_R` to the FLAGS in the appropriate `make/make.*` file, or to compile with `make USRFLAGS=-DNO_STRERROR_R`.
752 Make sure, the file `src/scip/misc.c` is recompiled.
754 ### No support for read command
756 On some systems, the option [-e] is not available for the read command.
757 You have to compile with `READ=read`.
759 ### Problems with Clp
761 In some situations, it may be necessary to adjust the flags for linking against Clp.
762 SCIP's Makefile tries to find the file `clp_addlibs.txt`, which specifies the needed libraries.
763 The first thing you should check is whether `clp_addlibs.txt` is present at in path `libclp.*/share/coin/doc/Clp/` (you may have to correct this path for some Clp versions).
764 If this file is not present in your Clp version, SCIP tries to guess the paths and libraries: it assumes that Blas and Lapack are installed as system libraries (`libblas.a`, `liblapack.a`) and are not build into the CoinUtils library.
765 If that is different in your build of Clp, you may have to remove `$(LINKCXX_l)lapack$(LINKLIBSUFFIX)` from the `LPSLDFLAGS` in `Makefile` or `make.project`.
766 Also removing `$(LINKCXX_l)bz2$(LINKLIBSUFFIX)` may help in some cases.
768 ### Compiler or linker errors
770 If you encounter other compiler or linker errors, you should recompile with `make VERBOSE=true ...` in order to get the full compiler invocation.
771 This might help to fix the corresponding machine dependent makefile in the make subdirectory.
773 Remarks on Installing under Windows using MinGW
774 -----------------------------------------------
776 To build your own Windows binaries under Windows, we recommend using the MinGW-Compiler with MSYS from mingw.org.
778 First install MSYS, then MinGW to the mingw folder inside the msys folder.
779 Now you need to install the following packages to the mingw folder:
780 - zlib (or use `ZLIB=false`)
781 - pcre (or use `ZIMPL=false` since pcre is needed for ZIMPL and ZIMPL-support in SCIP)
782 - gmplib (or use `ZIMPL=false` since gmplib is needed for ZIMPL and ZIMPL-support in SCIP)
784 (After calling `make clean` in the ZIMPL folder you will also need flex and bison to remake ZIMPL.
785 We recommend NOT to use `make clean` inside the ZIMPL-folder if you do not have these packages installed.)
787 You can download these additional packages as precompiled binaries:
788 - [zlib&pcre](http://gnuwin32.sourceforge.net/packages.html)
789 - [gmplib](http://cs.nyu.edu/exact/core/gmp/)
790 or compile the source on your own from the project homepages:
791 - [zlib](http://www.zlib.net/)
792 - [pcre](http://www.pcre.org/)
793 - [gmplib](http://www.gmplib.org/)
794 (The command `./configure --prefix=/mingw ; make ; make install` should succeed without problems and installs the packages into the mingw folder.)
796 Now `make READLINE=false` should be compiling without errors.
797 Please note that we do NOT support creating the doxygen documentation or readline-usage under Windows.
799 Since there are no real symlinks in MSYS, the include and library files of SoPlex and ZIMPL are actually copied into the SCIP-lib-folder.
800 When you recompile ZIMPL or SoPlex after compiling SCIP you have to copy the libraries manually into the SCIP-lib-folder and recompile SCIP afterwards.