Changes between Version 28 and Version 29 of user-configure


Ignore:
Timestamp:
Dec 1, 2006 6:05:18 PM (13 years ago)
Author:
lou
Comment:

typos, some tweaking of wording

Legend:

Unmodified
Added
Removed
Modified
  • user-configure

    v28 v29  
    11= Preparing the Compilation =
    22
    3 Here we only describe the configuration procedure on UNIX-like systems (including Linux, Cygwin, and MSys), where the user can run the {{{configure}}} shell script.  If you are using the MS Developer Studio, you are referred to the [http://projects.coin-or.org/MSDevStudio MSDevStudio project page].
     3This page describes the configuration procedure on UNIX-like systems (including Linux, Solaris, Cygwin, or MSys), where the user can run the {{{configure}}} shell script.  If you are using the MS Developer Studio, you are referred to the [http://projects.coin-or.org/MSDevStudio MSDevStudio project page].
    44
    55If you have problems, have a look at the [wiki:user-troubleshooting troubleshooting page.]
     
    77== Running the {{{configure}}} script ==
    88
    9 Assume that you have dowloaded the package {{{Pkg}}}
    10 in the directory {{{Coin-Pkg}}}. (If you got the code via a tarball, this directory might have a name like {{{Pgk-x.y.z}}}, where {{{x.y.z}}} is the point release number.)
     9Assume that you have downloaded the package {{{Pkg}}}
     10in the directory {{{Coin-Pkg}}}. (If you downloaded and unpacked a tarball, this directory might have a name like {{{Pkg-x.y.z}}}, where {{{x.y.z}}} is the point release number.)
    1111
    12 Before you can compile the source code using {{{make}}}, the Makefiles have to be created, so that they contain the correct compiler names and options, as well as other system dependent information.  To this purpose, the {{{configure}}} shell scripts in the package's base directory (e.g., {{{Coin-Clp}}}) and in the projects' main directories (such as {{{Coin-Clp/Clp}}}) perform a number of tests and create the final Makefiles.  In addition, a {{{configure}}} script usually creates a header file (such as {{{Coin-Clp/Clp/inc/config_clp.h}}}) for the individual project, which contains {{{#define}}}s to help the source code to adapt to different platforms.
     12Before you can compile the source code using {{{make}}}, Makefiles have to be created with the correct compiler names and options, as well as other system-dependent information.  To this purpose, the {{{configure}}} shell script in the package's base directory (''e.g.'', {{{Coin-Pkg/configure}}}) and the {{{configure}}} scripts in the included projects' main directories (''e.g.'', {{{Coin-Pkg/Clp/configure}}}, {{{Coin-Pkg/CoinUtils/configure}}}) perform a number of tests and create the final Makefiles.  In addition, a {{{configure}}} script usually creates a header file (''e.g'', {{{Coin-Pkg/Clp/inc/config_clp.h}}}) for each included project, which contains {{{#define}}}s to help the source code adapt to different platforms.
    1313
    14 You can run the configuration scipts in the directories where the source files are.  However, we recommend to perform a "VPATH configuration" (see also below), which compiles the code in a separate directory tree:
     14'''Note:''' You must run the base directory {{{configure}}} script (''e.g.'', {{{Coin-Pkg/configure}}}), not one in the directory of an included project (''e.g.'', {{{Coin-Pkg/Clp/configure}}}); the latter doesn't work. The base directory {{{configure}}} script will recursively run the {{{configure}}} scripts in the included project directories.
    1515
    16 First you create a new directory for the compiled code, change into this directory and then run the configuration script '''from the base directory''' in it.  The new directory can be anywhere; the following instruction assume that you are in the package's base directory ({{{Coin-Pkg}}}):
     16You can run the configuration scripts in the directories containing the source files.  However, we recommend a "VPATH configuration" ([wiki:user-configure#VpathCompilation see below]), which compiles the code in a separate directory tree. Briefly, you create a new directory for the compiled code, change into this directory, and then run the configuration script '''from the base directory'''.  The new directory can be anywhere; the following set of commands assumes that you are in the package's base directory ({{{Coin-Pkg}}}):
    1717{{{
    1818mkdir build
     
    2121}}}
    2222
    23 '''Note:''' You must run the base directory {{{configure}}} script, not one in a project subdirectory (such as {{{Coin-Clp/Clp}}}); the latter doesn't work.
     23The {{{configure}}} script picks settings for compilers and compiler options.  You can change some aspects of the configuration by providing arguments to the configuration script, as described
     24[wiki:user-configure#GivingOptions below].
    2425
    25 This picks default settings for compilers and compiler options.  You can change some aspects of the configuration by providing arguments to the configuration script, as described below.
    26 
    27 If the configuration is successful, the {{{configure}}} script usually prints a message indicating this.  '''If the configuration fails''', the output on the screen, or the more detailed output in one of the {{{config.log}}} files might help to find the cause - see the [wiki:user-troubleshooting Troubleshooting page].  If you are not able to fix the problem and want to contact the maintainers, you should submit a bug ticket at the corresponding Trac page and attach the {{{config.log}}} file that has the detailed error message in it.
     26If the configuration is successful, the {{{configure}}} script usually prints a message indicating this.  '''If the configuration fails''', the output on the screen, or the more detailed output in one of the {{{config.log}}} files, might help to find the cause - see the [wiki:user-troubleshooting Troubleshooting page].  If you are not able to fix the problem and want to contact the maintainers, you should submit a bug ticket at the corresponding Trac page and attach to the ticket the {{{config.log}}} file that has the detailed error message in it.
    2827
    2928'''Note:'''  If you rerun {{{configure}}} after a successful configuration run, you should do a '''make distclean''' if you changed the options for {{{configure}}}; see also the {{{make}}} target description at the [wiki:user-compile Compiling and installing the package] page.
    3029
    31 == Giving Options to the {{{configure}}} Script ==
     30== Giving Options to the {{{configure}}} Script ==#GivingOptions
    3231
    33 There are '''two types of arguments''' that can be given to the {{{configure}}} script.  The first set of arguments have the form of '''regular command line options''', such as {{{--enable-debug}}} or {{{-C}}}.  The second set of options works through '''variables''', and those can be provided either on the command line, or can be set as environment variables.
     32There are '''two types of arguments''' that can be given to the {{{configure}}} script.  The first type have the form of '''regular command line options''', such as {{{--enable-debug}}} or {{{-C}}}.  The second type work through '''variables''', and those can be provided either on the command line or can be set as environment variables.
    3433
    35 An alternative to providing configuration options through the command line is the {{{config.site}}} file, see below.
     34An alternative to providing configuration options through the command line is the ([wiki:user-configure#ConfigDotSiteFile config.site file]).
    3635
    37 For most COIN packages, several configuration scripts are run recursively.  You need to '''specify the options for all subprojects''' (e.g., {{{Clp}}} and {{{CoinUtils}}}) when you run the base {{{configure}}} script, since they are given to the sub{{{configure}}} scripts.
     36For most COIN packages, several configuration scripts are run recursively by the base directory {{{configure}}} script.  You need to '''specify the options for all included projects''' (e.g., {{{Clp}}}, or {{{CoinUtils}}}) when you run the base {{{configure}}} script so that it can pass them to the {{{configure}}} scripts for the included projects.
    3837
    3938You can see a '''list of all available options''' by running
     
    4544=== Command Line Arguments for {{{configure}}} ===
    4645
    47 The command line arguments are given to {{{configure}}} simply as additional arguments for to the command line.  Some common arguments are described here, but '''there might be additional options that you can find on the home pages for the individual COIN projects'''.
     46Command line arguments are given to {{{configure}}} in the usual manner for command line arguments.  Some common arguments are described here, but '''there might be additional options that you can find on the home pages for the individual COIN projects'''.
    4847
    49  * '''-C''': Makes {{{configure}}} '''use a cache file''' to speed up the tests when they been performed earlier; remember that a number of {{{configure}}} scripts are run recursively.  However, it is a good idea to '''delete the config.cache file before every command line rerun of configure''', so that changes in your local setup (such as added source code or changes in options) are correctly considered.
     48 * '''-C''': Instructs {{{configure}}} to '''use a cache file, {{{config.cache}}}''', to speed up configuration by remembering and reusing the results of tests already performed. The contents of {{{config.cache}}} will be consulted by the project scripts when they are called from the base {{{configure}}} script. '''The contents of config.cache will also be consulted each time {{{configure}}} is run again with the {{{-C}}} option.'''  If you are running {{{configure}}} with options that differ from previous runs, it is a good idea to '''delete the config.cache file''', so that changes in your local setup are correctly considered.
    5049
    51  * '''--prefix''': By default, the binaries and header files are installed (by {{{make install}}}) into {{{bin}}}, {{{lib}}}, and {{{include}}} directories of where the main configuration scripts was run.  If you prefer to have {{{make install}}} '''install in a different location''' (such as {{{$HOME}}}), you need to use this option, e.g., with {{{--prefix=$HOME}}}.
     50 * '''--prefix''': By default, the binaries and header files are installed (by {{{make install}}}) into {{{bin}}}, {{{lib}}}, and {{{include}}} subdirectories of the directory where the main configuration script was run. If you would like {{{make install}}} ''' to install the files in a different location''' (such as {{{$HOME}}}), you need to use this option, ''e.g.'', {{{--prefix=$HOME}}}.
    5251
    5352 * '''--enable-debug''': This causes {{{configure}}} to select the '''debug compiler options'''.  It also defines the preprocessor macro {{{COIN_DEBUG}}}, which in some source code is use to '''activate additional (time-consuming) consistency tests'''.
    5453
    55  * '''--enable-static''': By default, the COIN libraries are compiled as shared libraries or DLLs, at least on platforms that support this.  If you want to also have '''static libraries to be generated as well''', you need to specify this option.
     54 * '''--enable-static''': By default, the COIN libraries are compiled as shared libraries or DLLs on platforms that support this.  If you want '''static libraries to be generated as well''', you need to specify this option.
    5655
    5756 * '''--disable-shared''': If you want '''only static libraries''' to be compiled and no shared objects or DLLs, you should specify this option.
    5857
    59  * '''--enable-gnu-packages''': Some of the COIN projects can make use of GNU packages (such as zlib, bzlib, or readline).  Since those are usually provided under the GPL license, which has rather strong conditions, the configuration scripts do not check for the availability of those packages by default.  If you want to '''check for the availability of GNU packages to that they are linked into your code if available''', you need to provide this option. (Usually it will be necessary to add to CPPFLAGS the include-path and to LDFLAGS the path to the library, so that the package's header and library are found).
     58 * '''--enable-gnu-packages''': Some of the COIN projects can make use of GNU packages (such as zlib, bzlib, or readline).  Since they are usually provided under the GPL license, which has rather strong conditions, the configuration scripts do not check for the availability of those packages by default.  If you want to '''check for the availability of GNU packages to that they are linked into your code if available''', you need to specify this option. (Depending on your system configuration, it may be necessary to add to CPPFLAGS the path to the relevant include files, and to LDFLAGS the path to the relevant libraries, so that the packages' header and library files can be found).
    6059
    61  * Further options of the form '''--enable-...''' and '''with-...''' might be understood by the configuration scripts '''for specific COIN projects'''.  For example, if you want to tell the Open Solver Interface (OSI) that you want to compile the Cplex solver interface, you need to specify the {{{--with-cplex-lib}}} and {{{--with-cplex-incdir}}} options with the appropriate values.  (If such a value consists of more than one word, you need to enclose it in quotation marks.) For example:
     60 * Further options of the form '''--enable-...''' and '''--with-...''' might be understood by the configuration scripts '''for specific COIN projects'''.  For example, if you want to tell the Open Solver Interface (OSI) that you want to compile the Cplex solver interface, you need to specify the {{{--with-cplex-lib}}} and {{{--with-cplex-incdir}}} options, with the appropriate values.  If such a value consists of more than one word, you need to enclose it in quotation marks, for example:
    6261
    63     {{{--with-cplex-lib}}}="-L/usr/ilog/cplex90/lib/static_pic -lcplex"
     62    {{{--with-cplex-lib="-L/usr/ilog/cplex90/lib/static_pic -lcplex"}}}
    6463
    65  assuming that the cplex library (usually named libcplex.a)
    66 is located in /usr/ilog/cplex90/lib/static_pic.
    67 Note that, on some systems, the threading library must be
    68 added for cplex to work. In this case, the string is:
     64 assuming that the cplex library (usually named libcplex.a) is located in    {{{/usr/ilog/cplex90/lib/static_pic}}}. Note that on some systems the threading library must be added for cplex to work. In this case, the string is:
    6965
    70     {{{--with-cplex-lib}}}="-L/usr/ilog/cplex90/lib/static_pic -lcplex -lpthread"
     66    {{{--with-cplex-lib="-L/usr/ilog/cplex90/lib/static_pic -lcplex -lpthread"}}}
    7167
    7268 For the include string:
    7369
    74     {{{--with-cplex-incdir}}}="/usr/ilog/cplex90/include/ilcplex"
     70    {{{--with-cplex-incdir="/usr/ilog/cplex90/include/ilcplex"}}}
    7571
    76  assuming that the header file cplex.h is located in the directory
    77 /usr/ilog/cplex90/include/ilcplex.
     72 assuming that the header file cplex.h is located in the directory {{{/usr/ilog/cplex90/include/ilcplex}}}.
    7873
    7974
     
    8883=== Variable Arguments for {{{configure}}} ===
    8984
    90 Other options, usually related to compilation configuration (such as compiler names and options) can be set as variables.  The values for those variables can be either '''provided as environment variables''' (e.g., set in your shell startup script), '''or on the command line'''.  Values set on the command line overwrite values set in the environment.  If you want to set the value of a variable (such as {{{CXX}}}) in the comamnd line for {{{configure}}}, you simply list the variable, followed ''immediately'' by an {{{=}}} and the value, possibly enclosed in quotation marks (such as CXX="cl").
     85Other options, usually related to compilation configuration (such as compiler names and options) can be set as variables.  The values for those variables can be either '''provided as environment variables''' (''e.g.'', set in your shell startup script), '''or on the command line'''.  Values set on the command line overwrite values set in the environment.  If you want to set the value of a variable (such as {{{CXX}}}) in the comamnd line for {{{configure}}}, you simply list the variable, followed ''immediately'' by an {{{=}}} and the value, possibly enclosed in quotation marks (such as CXX="cl").
    9186
    9287Commonly used variable arguments are
    9388
    94  * '''CC''':  Name of the '''C compiler'''.  If this is not given, the {{{configure}}} script tries a list of compiler names.  You only need to specify this if you are not happy with the default selection.  If you want to compile the code in a non-default bit mode (say, 64bit on AIX), you should specify the corresponding flag here (e.g., {{{CC='xlc -q64'}}}), and not in {{{CFLAGS}}}.
     89 * '''CC''':  Name of the '''C compiler'''.  If this is not given, the {{{configure}}} script tries a list of compiler names.  You only need to specify this if you are not happy with the default selection.  If you want to compile the code in a non-default bit mode (say, 64-bit on AIX), you should specify the corresponding flag here (''e.g.'', {{{CC='xlc -q64'}}}), and not in {{{CFLAGS}}}.
    9590
    9691 * '''CFLAGS''':  '''C compiler flags'''.  If this is not given, the {{{configure}}} script chooses a default set of compiler flags, depending on the compiler, operating system, and whether the {{{--enable-debug}}} flag is given.
     
    9893 * '''ADD_CFLAGS''': '''Additional C compiler flags'''.  If you only want to add flags to the compiler flags automatically determined by the {{{configure}}} script (as {{{CFLAGS}}}), you can set those additional flags with this variable.
    9994
    100  * '''CXX''':  Name of the '''C++ compiler'''.  If this is not given, the {{{configure}}} script tries a list of compiler names.  You only need to specify this if you are not happy with the default selection.  If you want to compile the code in a non-default bit mode (say, 64bit on AIX), you should specify the corresponding flag here (e.g., {{{CXX='xlC -q64'}}}), and not in {{{CXXFLAGS}}}.  This only applies to packages that require the C++ compiler.
     95 * '''CXX''':  Name of the '''C++ compiler'''.  If this is not given, the {{{configure}}} script tries a list of compiler names.  You only need to specify this if you are not happy with the default selection.  If you want to compile the code in a non-default bit mode (say, 64-bit on AIX), you should specify the corresponding flag here (''e.g.'', {{{CXX='xlC -q64'}}}), and not in {{{CXXFLAGS}}}.  This only applies to packages that require the C++ compiler.
    10196
    10297 * '''CXXFLAGS''':  '''C++ compiler flags'''.  If this is not given, the {{{configure}}} script chooses a default set of compiler flags, depending on the compiler, operating system, and whether the {{{--enable-debug}}} flag is given.  This only applies to packages that require the C++ compiler.
     
    10499 * '''ADD_CXXFLAGS''': '''Additional C++ compiler flags'''.  If you only want to add flags to the compiler flags automatically determined by the {{{configure}}} script (as {{{CXXFLAGS}}}), you can set those additional flags with this variable.
    105100
    106  * '''F77''':  Name of the '''Fortran compiler'''.  If this is not given, the {{{configure}}} script tries a list of compiler names.  You only need to specify this if you are not happy with the default selection.  If you want to compile the code in a non-default bit mode (say, 64bit on AIX), you should specify the corresponding flag here (e.g., {{{F77='xlf -q64'}}}), and not in {{{FFLAGS}}}.  This only applies to packages that require the Fortran compiler.
     101 * '''F77''':  Name of the '''Fortran compiler'''.  If this is not given, the {{{configure}}} script tries a list of compiler names.  You only need to specify this if you are not happy with the default selection.  If you want to compile the code in a non-default bit mode (say, 64-bit on AIX), you should specify the corresponding flag here (''e.g.'', {{{F77='xlf -q64'}}}), and not in {{{FFLAGS}}}.  This only applies to packages that require the Fortran compiler.
    107102
    108103 * '''FFLAGS''':  '''Fortran compiler flags'''.  If this is not given, the {{{configure}}} script chooses a default set of compiler flags, depending on the compiler, operating system, and whether the {{{--enable-debug}}} flag is given.  This only applies to packages that require the Fortran compiler.
     
    110105 * '''ADD_FFLAGS''': '''Additional Fortran compiler flags'''.  If you only want to add flags to the compiler flags automatically determined by the {{{configure}}} script (as {{{FFLAGS}}}), you can set those additional flags with this variable.
    111106
    112  * '''ADDDEFS''':  If you want to have the C and C++ compile use '''additional -D preprocessor macro defintions''', you should list them in this variable (e.g., {{{ADDDEFS="-DPARANOIA"}}}).
     107 * '''ADDDEFS''':  If you want to have the C and C++ compile use '''additional -D preprocessor macro defintions''', you should list them in this variable (''e.g.'', {{{ADDDEFS="-DPARANOIA"}}}).
    113108
    114  * '''AR''':  '''Program for handling archives'''.  The default selection usually works fine.  Only on some systems (such as AIX), it is necessary to specify additional flags when compiling in 64bit mode (e.g., {{{AR="ar -X64"}}}).
     109 * '''AR''':  '''Program for handling archives'''.  The default selection usually works fine.  Only on some systems (such as AIX), it is necessary to specify additional flags when compiling in 64-bit mode (''e.g.'', {{{AR="ar -X64"}}}).
    115110
    116  * '''NM''':  '''Program for listing symbols''' in object files.  The default selection usually works fine.  Only on some systems (such as AIX), it is necessary to specify additional flags when compiling in 64bit mode (e.g., {{{NM="nm -X64"}}}).
     111 * '''NM''':  '''Program for listing symbols''' in object files.  The default selection usually works fine.  On some systems (such as AIX), it is necessary to specify additional flags when compiling in 64-bit mode (''e.g.'', {{{NM="nm -X64"}}}).
    117112
    118  * '''COIN_SKIP_PROJECTS''':  This allows to '''specify a list of COIN subprojects that should not be compiled'''.  For example, if you obtained the Osi package, but do not want to compile the {{{DyLP}}} and {{{Vol}}} subproject, you would specify '''COIN_SKIP_PROJECTS="DyLP Vol"'''.  This will skip the compilations of the DyLP and Vol libraries, and it will also not create the !OsiDylp and !OsiVol libraries.
     113 * '''COIN_SKIP_PROJECTS''':  This variable is used to '''specify a list of included projects that should not be compiled'''.  For example, if you obtained the Osi package, but do not want to compile the included {{{DyLP}}} and {{{Vol}}} projects, you would specify '''COIN_SKIP_PROJECTS="DyLP Vol"'''.  This will skip the compilation of the DyLP and Vol projects and consequently will not create the !OsiDylp and !OsiVol libraries.
    119114
    120 A complete invokation of the configure script could look like:
     115A complete invocation of the configure script could look like:
    121116
    122117{{{
     
    131126}}}
    132127
    133 == Specifying Options in a {{{config.site}}} File ==
     128== Specifying Options in a {{{config.site}}} File ==#ConfigDotSiteFile
    134129
    135130Setting all configuration arguments in the command line for {{{configure}}} can be somewhat inconvenient.  You can alternatively '''specify your choices in a file''' that is automatically read when {{{configure}}} is run.
    136131
    137 The name of this file is {{{config.site}}}.  The {{{configure}}} script looks for it in the '''share subdirectory of the installation directory''' (i.e., what you speficy with the {{{--prefix}}} argument, or by default in the {{{share}}} subdirectory of where you run {{{configure}}}).  You can specify a different location and name by setting the environment variable '''CONFIG_SITE''' to the full path to your {{{config.site}}} file, including the file name itself.
     132The name of this file is {{{config.site}}}.  The {{{configure}}} script looks for it in the '''share subdirectory of the installation directory''' (''i.e.'', the directory you specify with the {{{--prefix}}} argument), or by default in the {{{share}}} subdirectory of the directory where you run {{{configure}}}.  You can specify a different location and name by setting the environment variable '''CONFIG_SITE''' to the full path to your {{{config.site}}} file, including the file name itself.
    138133
    139 The {{{config.site}}} file is a '''shell script''' (for {{{bin/sh}}}) and needs to follow the shell's syntax.  It is used to set values of shell variables that are internally used by the {{{configure}}} script.  In case of '''variable arguments''' (such as {{{CC}}}), the name that should be used in {{{config.site}}} is identical to the name that could be specified in the command line.  For {{{--enable-...}}}-type arguments, the corresponding {{{config.site}}} shell variable is '''enable_...''' with the dashes replaced by underscore; to specify that the features is to be used, set this variable to {{{yes}}}, and to disable it, set it to {{{no}}}.  For {{{--with-...}}}-type arguments use the variable name '''with_...''', again with dashes replaced by underscores, and set it to the chosen value.  If no value is required, set it to {{{yes}}}, and to mimic a {{{--without...}}} option, set the corresponding {{{with_...}}} variable to {{{no}}}.
     134The {{{config.site}}} file is a '''shell script''' for {{{bin/sh}}} and needs to conform to {{{sh}}} syntax.  It is used to set values of shell variables that are used by the {{{configure}}} script.  In the case of '''variable arguments''' (such as {{{CC}}}), the name that should be used in {{{config.site}}} is identical to the name that is used on the command line.  For arguments of the form {{{--enable-...}}}, the corresponding {{{config.site}}} variable name is '''enable_...''' (''i.e.'', replace all dashes with underscores). To enable the feature, set the variable to {{{yes}}}; to disable it, set the variable to {{{no}}}.  For arguments of the form {{{--with-...}}}, use the variable name '''with_...''' (again with all dashes replaced by underscores) and set the variable to the appropriate value.  If no value is required, set it to {{{yes}}} to mimic {{{--with-...}}}, {{{no}}} to mimic {{{--without...}}}.
    140135
    141 ''Note: Since the {{{config.site}}} file is a shell script, you must not have any whitespace before and after the "{{{=}}}" symbol in a variable assignment!''
     136'''Note: Since the {{{config.site}}} file is a shell script, you must not have any whitespace before or after the "{{{=}}}" symbol in a variable assignment!'''
    142137
    143138An '''example [https://projects.coin-or.org/BuildTools/browser/stable/0.5/share/config.site?format=raw config.site] file''' can be found in the {{{BuildTools/share}}} directory.
    144139
    145 == Performing a VPATH Compilation ==
     140== Performing a VPATH Compilation ==#VpathCompilation
    146141
    147 It is possible to '''compile the code in a different place than where the source code is''' (using the make VPATH feature).  This can, for example, be handy, if you want to have several compiled versions around (e.g., for different operating systems when you are working on a shared files system, or a production and debug version).
     142It is possible to '''compile the code in a different place than where the source code is''' using the VPATH feature of {{{make}}}.  This can, for example, be handy if you want to have several compiled versions around (''e.g.'', for different operating systems when you are working on a shared files system, or a production and a debug version).
    148143
    149 To do a VPATH compilation, you simply run the {{{configure}}} script in the directory where you want to have the compiled files.  E.g., if the base directory of the COIN packages is in {{{$HOME/Coin-Pkg}}} and you want to compile the code in {{{$HOME/Obj/debug/Coin-Pkg}}}, you type
     144To do a VPATH compilation, you simply run the {{{configure}}} script in the directory where you want to place the compiled files.  ''E.g.'', if the base directory of the COIN package is {{{$HOME/Coin-Pkg}}} and you want to place the compiled the code in {{{$HOME/Obj/debug/Coin-Pkg}}}, you type
    150145
    151146{{{
     
    154149}}}
    155150
    156 (Of course, you use those options for {{{configure}}} that you want to use, not necessarily the above ones.)  After you run {{{configure}}}, you will find the same directory structure under {{{$HOME/Obj/debug/Coin-Pkg}}} as in {{{$HOME/Coin-Pkg}}} (at least those directories that have source code in {{{$HOME/Coin-Pkg}}}), together with the Makefiles.  To compile the code, you how enter the {{{make}}} commands in {{{$HOME/Obj/debug/Coin-Pkg}}}.  Note, that if you install the code and didn't specify a specific installation location with the {{{--prefix}}} flag, the installed files will go into {{{bin}}}, {{{lib}}}, and {{{include}}} subdirectories of {{{$HOME/Obj/debug/Coin-Pkg}}}.
     151(Of course, you use the options for {{{configure}}} that you want to use, not necessarily the ones above.)  After you run {{{configure}}}, you will find the same directory structure under {{{$HOME/Obj/debug/Coin-Pkg}}} as in {{{$HOME/Coin-Pkg}}} (at least those directories that have source code in {{{$HOME/Coin-Pkg}}}), together with the Makefiles.  To compile the code, you how type the {{{make}}} command in {{{$HOME/Obj/debug/Coin-Pkg}}}.  Note that if you don't specify a specific installation location with the {{{--prefix}}} flag when running {{{configure}}}, the installed files will go into {{{bin}}}, {{{lib}}}, and {{{include}}} subdirectories of {{{$HOME/Obj/debug/Coin-Pkg}}}.
    157152
    158 '''Note:''' A VPATH compilation is not possible, if you ran {{{configure}}} already in the source code directory ({{{$HOME/Coin-Pkg}}} in the example above).  You would need to do a {{{make distclean}}} in the source code directory first.
     153'''Note:''' A VPATH compilation is not possible if you have already run {{{configure}}} in the source code directory ({{{$HOME/Coin-Pkg}}} in the example above).  You will need to do a {{{make distclean}}} in the source code directory first.