coin-or / Clp

COIN-OR Linear Programming Solver
Other
392 stars 82 forks source link

Which is the file compilation order? #253

Closed SanPen closed 1 year ago

SanPen commented 1 year ago

Hi,

I recognize I am doing something quite unusual but very convenient for me; I copied the CBC, CLP, CGL, CoinUtils and Osi repositories into a thirds party folder in my project and I created cmake files for each third party project (attached the Clp cmake file). The goal is to compile the Cbc files (and all their dependencies) along with the rest of the project, using the same BLAS+LAPACK, same optimizations, etc. The desired effect is that I can handle the compilation for different environments easier.

At the top of the file AbcSimplex.hpp there are some classes declared, that are implemented elsewhere:

class AbcSimplex;
class AbcDualRowPivot;
class AbcPrimalColumnPivot;
class AbcSimplexFactorization;
class AbcNonLinearCost;
class OsiAbcSolverInterface;
class CoinWarmStartBasis;
class ClpDisasterHandler;
class AbcSimplexProgress;
class AbcMatrix;
class AbcTolerancesEtc;

Since the order of the files in the cmake file is probably wrong, I'm getting the following error:

In file included from AbcDualRowDantzig.cpp:6: AbcSimplex.hpp:1423:22: error: field ‘abcProgress_’ has incomplete type ‘AbcSimplexProgress’
 1423 |   AbcSimplexProgress abcProgress_;
      |                      ^~~~~~~~~~~~
AbcSimplex.hpp:32:7: note: forward declaration of ‘class AbcSimplexProgress’
   32 | class AbcSimplexProgress;

I know about cmake but I know nothing about makefiles, hence this question.

Which is the Clp file compilation order?

SanPen commented 1 year ago

just saw a pull request with the cmake files, so I'm closing this since it worked with that