Build fail on Linux with IpTNLP.hpp not found

755 views
Skip to first unread message

Federico Spinelli

unread,
Aug 3, 2015, 9:28:38 AM8/3/15
to CasADi
Hi, I'm trying to build casadi on ubuntu 14.04.02 machine, i'm getting this error which i think comes from Ipopt.

"casadi/interfaces/ipopt/ipopt_nlp.hpp:29:22 fatal error: IpTNLP.hpp: No such file or directory"

I compiled ipopt from source, with all third party dependencies (except HSL, which i'm still waiting to recieve) and everything looks fine.
pkg-config correctly find ipopt libraries. I'm not sure what i'm missing, but it must be trivial. I can't find IpTNLP in casadi cmake variables, so i'm out of ideas on how to proceed.
If any of you has some ideas, i would greatly appreciate that.
Thanks

Joris Gillis

unread,
Aug 3, 2015, 9:51:23 AM8/3/15
to CasADi
Dear Federico,

Can you provide us with some debugging information?
In particular:
 - what version of casadi?
 - what version of ipopt?
 - `grep -i "ipopt" CMakeCache.txt`  from the casadi builddir
 - sudo updatedb && locate IpTNLP.hpp
 - the output from `make VERBOSE=1` from the casadi builddir

Best regards,
   Joris Gillis

Federico Spinelli

unread,
Aug 3, 2015, 11:57:39 AM8/3/15
to CasADi
  • Casadi Version: cloned git repository at master then checked out to "release-2.3.0-rc3"
  • Ipopt Version: stable/3.12
  • grep -i "ipopt" CMakeCache.txt
//Compile the interface to IPOPT
WITH_IPOPT:BOOL=ON
casadi_nlpsolver_ipopt_LIB_DEPENDS:STATIC=general;casadi;general;ipopt;general;lapack;general;dmumps;general;mpi;general;gfortran;general;gcc_s;general;quadmath;general;blas;general;m;general;dl;
//Details about finding IPOPT
FIND_PACKAGE_MESSAGE_DETAILS_IPOPT:INTERNAL=[ipopt;lapack;dmumps;mpi;gfortran;gcc_s;quadmath;blas;m;dl][/usr/include/coin;/home/marco/Code/casadi/external_packages/ipopt/3.10][v()]
IPOPT_CFLAGS:INTERNAL=-DHAVE_CSTDDEF;-I/usr/include/coin
IPOPT_CFLAGS_I:INTERNAL=
IPOPT_CFLAGS_OTHER:INTERNAL=-DHAVE_CSTDDEF
IPOPT_FOUND:INTERNAL=1
IPOPT_INCLUDEDIR:INTERNAL=/usr/include/coin
IPOPT_INCLUDE_DIRS:INTERNAL=/usr/include/coin
IPOPT_LDFLAGS:INTERNAL=-L/usr/lib/gcc/x86_64-linux-gnu/4.8;-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu;-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib;-L/lib/../lib;-L/usr/lib/../lib;-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..;-lipopt;-llapack;-ldmumps;-lmpi;-lgfortran;-lgcc_s;-lquadmath;-lblas;-lm;-ldl
IPOPT_LDFLAGS_OTHER:INTERNAL=
IPOPT_LIBDIR:INTERNAL=/usr/lib
IPOPT_LIBRARIES:INTERNAL=ipopt;lapack;dmumps;mpi;gfortran;gcc_s;quadmath;blas;m;dl
IPOPT_LIBRARY_DIRS:INTERNAL=/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu;/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib;/lib/../lib;/usr/lib/../lib;/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..
IPOPT_LIBS:INTERNAL=
IPOPT_LIBS_L:INTERNAL=
IPOPT_LIBS_OTHER:INTERNAL=
IPOPT_LIBS_PATHS:INTERNAL=
IPOPT_PREFIX:INTERNAL=/usr
IPOPT_STATIC_CFLAGS:INTERNAL=-DHAVE_CSTDDEF;-I/usr/include/coin
IPOPT_STATIC_CFLAGS_I:INTERNAL=
IPOPT_STATIC_CFLAGS_OTHER:INTERNAL=-DHAVE_CSTDDEF
IPOPT_STATIC_INCLUDE_DIRS:INTERNAL=/usr/include/coin
IPOPT_STATIC_LDFLAGS:INTERNAL=-L/usr/lib/gcc/x86_64-linux-gnu/4.8;-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu;-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib;-L/lib/../lib;-L/usr/lib/../lib;-L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..;-lipopt;-llapack;-ldmumps;-lmpi;-lgfortran;-lgcc_s;-lquadmath;-lblas;-lm;-ldl
IPOPT_STATIC_LDFLAGS_OTHER:INTERNAL=
IPOPT_STATIC_LIBDIR:INTERNAL=
IPOPT_STATIC_LIBRARIES:INTERNAL=ipopt;lapack;dmumps;mpi;gfortran;gcc_s;quadmath;blas;m;dl
IPOPT_STATIC_LIBRARY_DIRS:INTERNAL=/usr/lib/gcc/x86_64-linux-gnu/4.8;/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu;/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib;/lib/../lib;/usr/lib/../lib;/usr/lib/gcc/x86_64-linux-gnu/4.8/../../..
IPOPT_STATIC_LIBS:INTERNAL=
IPOPT_STATIC_LIBS_L:INTERNAL=
IPOPT_STATIC_LIBS_OTHER:INTERNAL=
IPOPT_STATIC_LIBS_PATHS:INTERNAL=
IPOPT_VERSION:INTERNAL=3.11.4
IPOPT_ipopt_INCLUDEDIR:INTERNAL=
IPOPT_ipopt_LIBDIR:INTERNAL=
IPOPT_ipopt_PREFIX:INTERNAL=
IPOPT_ipopt_VERSION:INTERNAL=
__pkg_config_checked_IPOPT:INTERNAL=1

  • sudo updatedb && locate IpTNLP.hpp
/home/marco/Code/Ipopt/Ipopt/src/Interfaces/IpTNLP.hpp
/home/marco/Downloads/CoinIpopt/Ipopt/src/Interfaces/IpTNLP.hpp
/usr/local/include/coin/IpTNLP.hpp
  • make VERBOSE=1
/usr/bin/cmake -H/home/marco/Code/casadi -B/home/marco/Code/casadi/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/marco/Code/casadi/build/CMakeFiles /home/marco/Code/casadi/build/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory `/home/marco/Code/casadi/build'
make -f external_packages/tinyxml-2.6.2/CMakeFiles/casadi_tinyxml.dir/build.make external_packages/tinyxml-2.6.2/CMakeFiles/casadi_tinyxml.dir/depend
make[2]: Entering directory `/home/marco/Code/casadi/build'
cd /home/marco/Code/casadi/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/marco/Code/casadi /home/marco/Code/casadi/external_packages/tinyxml-2.6.2 /home/marco/Code/casadi/build /home/marco/Code/casadi/build/external_packages/tinyxml-2.6.2 /home/marco/Code/casadi/build/external_packages/tinyxml-2.6.2/CMakeFiles/casadi_tinyxml.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/marco/Code/casadi/build'
make -f external_packages/tinyxml-2.6.2/CMakeFiles/casadi_tinyxml.dir/build.make external_packages/tinyxml-2.6.2/CMakeFiles/casadi_tinyxml.dir/build
make[2]: Entering directory `/home/marco/Code/casadi/build'
make[2]: Nothing to be done for `external_packages/tinyxml-2.6.2/CMakeFiles/casadi_tinyxml.dir/build'.
make[2]: Leaving directory `/home/marco/Code/casadi/build'
/usr/bin/cmake -E cmake_progress_report /home/marco/Code/casadi/build/CMakeFiles  78
[  1%] Built target casadi_tinyxml
make -f external_packages/CSparse/CMakeFiles/casadi_csparse.dir/build.make external_packages/CSparse/CMakeFiles/casadi_csparse.dir/depend
make[2]: Entering directory `/home/marco/Code/casadi/build'
cd /home/marco/Code/casadi/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/marco/Code/casadi /home/marco/Code/casadi/external_packages/CSparse /home/marco/Code/casadi/build /home/marco/Code/casadi/build/external_packages/CSparse /home/marco/Code/casadi/build/external_packages/CSparse/CMakeFiles/casadi_csparse.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/marco/Code/casadi/build'
make -f external_packages/CSparse/CMakeFiles/casadi_csparse.dir/build.make external_packages/CSparse/CMakeFiles/casadi_csparse.dir/build
make[2]: Entering directory `/home/marco/Code/casadi/build'
make[2]: Nothing to be done for `external_packages/CSparse/CMakeFiles/casadi_csparse.dir/build'.
make[2]: Leaving directory `/home/marco/Code/casadi/build'
/usr/bin/cmake -E cmake_progress_report /home/marco/Code/casadi/build/CMakeFiles  24 25 26 27 28 29 30 31 32 33 34
[ 15%] Built target casadi_csparse
make -f external_packages/sundials-2.5mod/CMakeFiles/casadi_sundials.dir/build.make external_packages/sundials-2.5mod/CMakeFiles/casadi_sundials.dir/depend
make[2]: Entering directory `/home/marco/Code/casadi/build'
cd /home/marco/Code/casadi/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/marco/Code/casadi /home/marco/Code/casadi/external_packages/sundials-2.5mod /home/marco/Code/casadi/build /home/marco/Code/casadi/build/external_packages/sundials-2.5mod /home/marco/Code/casadi/build/external_packages/sundials-2.5mod/CMakeFiles/casadi_sundials.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/marco/Code/casadi/build'
make -f external_packages/sundials-2.5mod/CMakeFiles/casadi_sundials.dir/build.make external_packages/sundials-2.5mod/CMakeFiles/casadi_sundials.dir/build
make[2]: Entering directory `/home/marco/Code/casadi/build'
make[2]: Nothing to be done for `external_packages/sundials-2.5mod/CMakeFiles/casadi_sundials.dir/build'.
make[2]: Leaving directory `/home/marco/Code/casadi/build'
/usr/bin/cmake -E cmake_progress_report /home/marco/Code/casadi/build/CMakeFiles  68 69 70 71 72 73 74 75 76 77
[ 28%] Built target casadi_sundials
make -f external_packages/qpOASES/CMakeFiles/casadi_qpoases.dir/build.make external_packages/qpOASES/CMakeFiles/casadi_qpoases.dir/depend
make[2]: Entering directory `/home/marco/Code/casadi/build'
cd /home/marco/Code/casadi/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/marco/Code/casadi /home/marco/Code/casadi/external_packages/qpOASES /home/marco/Code/casadi/build /home/marco/Code/casadi/build/external_packages/qpOASES /home/marco/Code/casadi/build/external_packages/qpOASES/CMakeFiles/casadi_qpoases.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/marco/Code/casadi/build'
make -f external_packages/qpOASES/CMakeFiles/casadi_qpoases.dir/build.make external_packages/qpOASES/CMakeFiles/casadi_qpoases.dir/build
make[2]: Entering directory `/home/marco/Code/casadi/build'
make[2]: Nothing to be done for `external_packages/qpOASES/CMakeFiles/casadi_qpoases.dir/build'.
make[2]: Leaving directory `/home/marco/Code/casadi/build'
/usr/bin/cmake -E cmake_progress_report /home/marco/Code/casadi/build/CMakeFiles  62 63 64
[ 32%] Built target casadi_qpoases
make -f external_packages/DSDP/CMakeFiles/casadi_dsdp.dir/build.make external_packages/DSDP/CMakeFiles/casadi_dsdp.dir/depend
make[2]: Entering directory `/home/marco/Code/casadi/build'
cd /home/marco/Code/casadi/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/marco/Code/casadi /home/marco/Code/casadi/external_packages/DSDP /home/marco/Code/casadi/build /home/marco/Code/casadi/build/external_packages/DSDP /home/marco/Code/casadi/build/external_packages/DSDP/CMakeFiles/casadi_dsdp.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/marco/Code/casadi/build'
make -f external_packages/DSDP/CMakeFiles/casadi_dsdp.dir/build.make external_packages/DSDP/CMakeFiles/casadi_dsdp.dir/build
make[2]: Entering directory `/home/marco/Code/casadi/build'
make[2]: Nothing to be done for `external_packages/DSDP/CMakeFiles/casadi_dsdp.dir/build'.
make[2]: Leaving directory `/home/marco/Code/casadi/build'
/usr/bin/cmake -E cmake_progress_report /home/marco/Code/casadi/build/CMakeFiles  38 39 40 41 42 43 44 45 46 47 48 49 50
[ 49%] Built target casadi_dsdp
make -f casadi/core/runtime/CMakeFiles/casadi_runtime_embedded.dir/build.make casadi/core/runtime/CMakeFiles/casadi_runtime_embedded.dir/depend
make[2]: Entering directory `/home/marco/Code/casadi/build'
cd /home/marco/Code/casadi/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/marco/Code/casadi /home/marco/Code/casadi/casadi/core/runtime /home/marco/Code/casadi/build /home/marco/Code/casadi/build/casadi/core/runtime /home/marco/Code/casadi/build/casadi/core/runtime/CMakeFiles/casadi_runtime_embedded.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/marco/Code/casadi/build'
make -f casadi/core/runtime/CMakeFiles/casadi_runtime_embedded.dir/build.make casadi/core/runtime/CMakeFiles/casadi_runtime_embedded.dir/build
make[2]: Entering directory `/home/marco/Code/casadi/build'
make[2]: Nothing to be done for `casadi/core/runtime/CMakeFiles/casadi_runtime_embedded.dir/build'.
make[2]: Leaving directory `/home/marco/Code/casadi/build'
/usr/bin/cmake -E cmake_progress_report /home/marco/Code/casadi/build/CMakeFiles 
[ 49%] Built target casadi_runtime_embedded
make -f casadi/core/CMakeFiles/casadi.dir/build.make casadi/core/CMakeFiles/casadi.dir/depend
make[2]: Entering directory `/home/marco/Code/casadi/build'
cd /home/marco/Code/casadi/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/marco/Code/casadi /home/marco/Code/casadi/casadi/core /home/marco/Code/casadi/build /home/marco/Code/casadi/build/casadi/core /home/marco/Code/casadi/build/casadi/core/CMakeFiles/casadi.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/marco/Code/casadi/build'
make -f casadi/core/CMakeFiles/casadi.dir/build.make casadi/core/CMakeFiles/casadi.dir/build
make[2]: Entering directory `/home/marco/Code/casadi/build'
make[2]: Nothing to be done for `casadi/core/CMakeFiles/casadi.dir/build'.
make[2]: Leaving directory `/home/marco/Code/casadi/build'
/usr/bin/cmake -E cmake_progress_report /home/marco/Code/casadi/build/CMakeFiles  2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
[ 77%] Built target casadi
make -f casadi/solvers/CMakeFiles/casadi_implicitfunction_newton.dir/build.make casadi/solvers/CMakeFiles/casadi_implicitfunction_newton.dir/depend
make[2]: Entering directory `/home/marco/Code/casadi/build'
cd /home/marco/Code/casadi/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/marco/Code/casadi /home/marco/Code/casadi/casadi/solvers /home/marco/Code/casadi/build /home/marco/Code/casadi/build/casadi/solvers /home/marco/Code/casadi/build/casadi/solvers/CMakeFiles/casadi_implicitfunction_newton.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/marco/Code/casadi/build'
make -f casadi/solvers/CMakeFiles/casadi_implicitfunction_newton.dir/build.make casadi/solvers/CMakeFiles/casadi_implicitfunction_newton.dir/build
make[2]: Entering directory `/home/marco/Code/casadi/build'
make[2]: Nothing to be done for `casadi/solvers/CMakeFiles/casadi_implicitfunction_newton.dir/build'.
make[2]: Leaving directory `/home/marco/Code/casadi/build'
/usr/bin/cmake -E cmake_progress_report /home/marco/Code/casadi/build/CMakeFiles 
[ 77%] Built target casadi_implicitfunction_newton
make -f casadi/interfaces/lapack/CMakeFiles/casadi_linearsolver_lapacklu.dir/build.make casadi/interfaces/lapack/CMakeFiles/casadi_linearsolver_lapacklu.dir/depend
make[2]: Entering directory `/home/marco/Code/casadi/build'
cd /home/marco/Code/casadi/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/marco/Code/casadi /home/marco/Code/casadi/casadi/interfaces/lapack /home/marco/Code/casadi/build /home/marco/Code/casadi/build/casadi/interfaces/lapack /home/marco/Code/casadi/build/casadi/interfaces/lapack/CMakeFiles/casadi_linearsolver_lapacklu.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/marco/Code/casadi/build'
make -f casadi/interfaces/lapack/CMakeFiles/casadi_linearsolver_lapacklu.dir/build.make casadi/interfaces/lapack/CMakeFiles/casadi_linearsolver_lapacklu.dir/build
make[2]: Entering directory `/home/marco/Code/casadi/build'
make[2]: Nothing to be done for `casadi/interfaces/lapack/CMakeFiles/casadi_linearsolver_lapacklu.dir/build'.
make[2]: Leaving directory `/home/marco/Code/casadi/build'
/usr/bin/cmake -E cmake_progress_report /home/marco/Code/casadi/build/CMakeFiles  56
[ 79%] Built target casadi_linearsolver_lapacklu
make -f casadi/interfaces/ipopt/CMakeFiles/casadi_nlpsolver_ipopt.dir/build.make casadi/interfaces/ipopt/CMakeFiles/casadi_nlpsolver_ipopt.dir/depend
make[2]: Entering directory `/home/marco/Code/casadi/build'
cd /home/marco/Code/casadi/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/marco/Code/casadi /home/marco/Code/casadi/casadi/interfaces/ipopt /home/marco/Code/casadi/build /home/marco/Code/casadi/build/casadi/interfaces/ipopt /home/marco/Code/casadi/build/casadi/interfaces/ipopt/CMakeFiles/casadi_nlpsolver_ipopt.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/marco/Code/casadi/build'
make -f casadi/interfaces/ipopt/CMakeFiles/casadi_nlpsolver_ipopt.dir/build.make casadi/interfaces/ipopt/CMakeFiles/casadi_nlpsolver_ipopt.dir/build
make[2]: Entering directory `/home/marco/Code/casadi/build'
/usr/bin/cmake -E cmake_progress_report /home/marco/Code/casadi/build/CMakeFiles 
[ 79%] Building CXX object casadi/interfaces/ipopt/CMakeFiles/casadi_nlpsolver_ipopt.dir/ipopt_interface.cpp.o
cd /home/marco/Code/casadi/build/casadi/interfaces/ipopt && /usr/bin/c++   -DHAS_COPYSIGN -DHAS_ERF -DHAVE_CSTDDEF -DSHARED_LIBRARY -DUSE_CXX11 -DWITH_DL -DWITH_IPOPT_CALLBACK -D_SCL_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -Dcasadi_nlpsolver_ipopt_EXPORTS -std=gnu++11 -fPIC -fopenmp -DWITH_OPENMP -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -fPIC -I/home/marco/Code/casadi/. -I/home/marco/Code/casadi/build -I/usr/include/coin -I/home/marco/Code/casadi/external_packages/ipopt/3.10    -o CMakeFiles/casadi_nlpsolver_ipopt.dir/ipopt_interface.cpp.o -c /home/marco/Code/casadi/casadi/interfaces/ipopt/ipopt_interface.cpp
In file included from /home/marco/Code/casadi/casadi/interfaces/ipopt/ipopt_interface.cpp:28:0:
/home/marco/Code/casadi/casadi/interfaces/ipopt/ipopt_nlp.hpp:29:22: fatal error: IpTNLP.hpp: No such file or directory
 #include <IpTNLP.hpp>
                      ^
compilation terminated.
make[2]: *** [casadi/interfaces/ipopt/CMakeFiles/casadi_nlpsolver_ipopt.dir/ipopt_interface.cpp.o] Error 1
make[2]: Leaving directory `/home/marco/Code/casadi/build'
make[1]: *** [casadi/interfaces/ipopt/CMakeFiles/casadi_nlpsolver_ipopt.dir/all] Error 2
make[1]: Leaving directory `/home/marco/Code/casadi/build'
make: *** [all] Error 2

Thanks again
Federico

Joris Gillis

unread,
Aug 3, 2015, 12:34:02 PM8/3/15
to CasADi
Seems like there's something wrong with your pkg-config.

Casadi is pointed to

/usr/include/coin/

while the includes really reside in

/usr/local/include/coin/

Could you confirm this analysis by providing the output of "pkg-config --cflags ipopt" ?

Best regards,
   Joris

Federico Spinelli

unread,
Aug 3, 2015, 1:21:50 PM8/3/15
to CasADi
Doesnt look like that's the problem:
"-I/usr/local/include/coin -I/usr/local/include/coin/ThirdParty -I/usr/local/include"

Also relevant pkg-config files are located where they should:
$ locate ipopt.pc
"/usr/local/lib/pkgconfig/casadi_nlpsolver_ipopt.pc
/usr/local/lib/pkgconfig/ipopt.pc"

Federico Spinelli

unread,
Aug 3, 2015, 1:52:09 PM8/3/15
to CasADi
Oh, i was being dumb, i figured out.

I got an old build directory of casadi, where ipopt was installed from apt so it was pointing to /usr/lib. Removing and rebuilding did the trick.
Thanks for pointing me to that
cheers
Federico
Reply all
Reply to author
Forward
0 new messages