ibex-team / ibex-lib

IBEX is a C++ library for constraint processing over real numbers.
http://ibex-team.github.io/ibex-lib/
GNU Lesser General Public License v3.0
67 stars 51 forks source link

compilation dans examples avec cmake #495

Closed bneveu closed 3 years ago

bneveu commented 3 years ago

Je n'arrive pas à compiler un fichier dans examples. J'ai utilisé le makefile dans examples. ibex est installé localement dans /home/bertrand/ibex/ibex-develop/ibex-lib/build cmake -DLP_LIB=clp -DCLP_DIR=/usr/lib/x86_64-linux-gnu -DCOIN_DIR=/usr/lib/x86_64-linux-gnu -DCMAKE_INSTALL_PREFIX=.

make ne trouve pas ibex.h echo $PKG_CONFIG_PATH /home/bertrand/ibex/ibex-develop/ibex-lib/build

make optimizer05 g++ -I/home/bertrand/ibex/ibex-develop/ibex-lib/build/include -I/home/bertrand/ibex/ibex-develop/ibex-lib/build/include/ibex -I/home/bertrand/ibex/ibex-develop/ibex-lib/build/include/ibex/3rd -I/usr/include/coin -O3 -DNDEBUG -std=c++11 -DIBEX_BENCHS_DIR=\"../benchs/solver\" -U__STRICT_ANSI__ -o optimizer05 optimizer05.cpp -L/home/bertrand/ibex/ibex-develop/ibex-lib/build/lib -L/home/bertrand/ibex/ibex-develop/ibex-lib/build/lib/3rd -libex -lgaol -lgdtoa -lultim /usr/lib/x86_64-linux-gnu/libClp.so /usr/lib/x86_64-linux-gnu/libCoinUtils.so /usr/lib/x86_64-linux-gnu/libbz2.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/liblapack.so /usr/lib/libblas.so /usr/lib/x86_64-linux-gnu/libm.so optimizer05.cpp:12:18: fatal error: ibex.h: Aucun fichier ou dossier de ce type compilation terminated.

gchabert commented 3 years ago

Je suppose qu'il faut plutôt fixer PKG_CONFIG_PATH ainsi: export PKG_CONFIG_PATH=/home/bertrand/ibex/ibex-develop/ibex-lib/build/share/pkgconfig

PS: dans les conventions cmake, je crois qu'il est déconseillé d'utiliser le répertoire build comme répertoire d'installation. (on peut décider par exemple de supprimer build une fois le programme installé)

cyrilbouvier commented 3 years ago

Est-ce que le dossier /home/bertrand/ibex/ibex-develop/ibex-lib/build contient le fichier ibex.h ? Si tu as la commande tree est-ce que tu peux poster le résultat de tree -L 2 /home/bertrand/ibex/ibex-develop/ibex-lib/build ? Sinon le résultat de ls -l /home/bertrand/ibex/ibex-develop/ibex-lib/build devrait suffire.

Note: Installer Ibex dans le répertoire de build (-DCMAKE_INSTALL_PREFIX=.) me semble être assez 'dangereux'. Et est peut être la source de l'erreur que tu obtiens.

gchabert commented 3 years ago

Cependant, j'ai moi-même des soucis pour compiler les exemples avec cmake, voir https://github.com/ibex-team/ibex-lib/issues/493

En attendant que Cyril règle le problème, je l'ai contourné en ajoutant moi-même (à la main) temporairement les chemins manquant dans la variable LIBS du makefile: LIBS:= $(shell pkg-config --libs ibex) -L[...]/ibex/ibex-lib/__build__/3rd/lib -L[...]/ibex/ibex-lib/build/lib

Remplace [...] par le bon chemin chez toi.

bneveu commented 3 years ago

Il n'y a pas de ibex.h dans /home/bertrand/ibex/ibex-develop/ibex-lib/build. Il y a un ibex.pc voici le résultat de tree tree -L 2 /home/bertrand/ibex/ibex-develop/ibex-lib/build /home/bertrand/ibex/ibex-develop/ibex-lib/build ├── bin │   ├── ibexopt │   └── ibexsolve ├── CMakeCache.txt ├── CMakeFiles │   ├── 3.5.1 │   ├── check.dir │   ├── CheckTypeSize │   ├── cmake.check_cache │   ├── CMakeDirectoryInformation.cmake │   ├── CMakeError.log │   ├── CMakeOutput.log │   ├── CMakeRuleHashes.txt │   ├── CMakeTmp │   ├── ContinuousBuild.dir │   ├── ContinuousConfigure.dir │   ├── ContinuousCoverage.dir │   ├── Continuous.dir │   ├── ContinuousMemCheck.dir │   ├── ContinuousStart.dir │   ├── ContinuousSubmit.dir │   ├── ContinuousTest.dir │   ├── ContinuousUpdate.dir │   ├── ExperimentalBuild.dir │   ├── ExperimentalConfigure.dir │   ├── ExperimentalCoverage.dir │   ├── Experimental.dir │   ├── ExperimentalMemCheck.dir │   ├── ExperimentalStart.dir │   ├── ExperimentalSubmit.dir │   ├── ExperimentalTest.dir │   ├── ExperimentalUpdate.dir │   ├── feature_tests.bin │   ├── feature_tests.c │   ├── feature_tests.cxx │   ├── Makefile2 │   ├── Makefile.cmake │   ├── NightlyBuild.dir │   ├── NightlyConfigure.dir │   ├── NightlyCoverage.dir │   ├── Nightly.dir │   ├── NightlyMemCheck.dir │   ├── NightlyMemoryCheck.dir │   ├── NightlyStart.dir │   ├── NightlySubmit.dir │   ├── NightlyTest.dir │   ├── NightlyUpdate.dir │   ├── progress.marks │   ├── TargetDirectories.txt │   ├── TestEndianess.bin │   └── uninstall.dir ├── cmake_install.cmake ├── cmake_uninstall.cmake ├── CPackConfig.cmake ├── CPackSourceConfig.cmake ├── CTestTestfile.cmake ├── DartConfiguration.tcl ├── ibex.pc ├── interval_lib_wrapper │   ├── CMakeFiles │   ├── cmake_install.cmake │   ├── filib │   ├── gaol │   └── Makefile ├── lib │   └── libsoplex.a ├── lp_lib_wrapper │   ├── clp │   ├── CMakeFiles │   ├── cmake_install.cmake │   ├── Makefile │   └── soplex ├── Makefile ├── soplex_update_githash.cmake ├── src │   ├── arithmetic │   ├── bin │   ├── bisector │   ├── cell │   ├── CMakeFiles │   ├── cmake_install.cmake │   ├── combinatorial │   ├── contractor │   ├── data │   ├── function │   ├── ibex-config.cmake │   ├── ibex-config-version.cmake │   ├── ibex.h │   ├── ibex_Setting.h │   ├── libibex.a │   ├── loup │   ├── Makefile │   ├── numeric │   ├── optim │   ├── parser │   ├── predicate │   ├── set │   ├── solver │   ├── strategy │   ├── symbolic │   ├── system │   └── tools ├── Testing │   └── Temporary └── tests ├── CMakeFiles ├── cmake_install.cmake ├── CTestTestfile.cmake └── Makefile

69 directories, 40 files

cyrilbouvier commented 3 years ago

Est-ce que tu as bien exécuté la commande make install pour installer les fichiers ?

Je réitère ma recommandation de ne pas utiliser le répertoire de build comme répertoire d'installation. Trouvé dans un bug report sur le Git de CMake (https://gitlab.kitware.com/cmake/cmake/-/issues/19322):

CMAKE_INSTALL_PREFIX should not be set to CMAKE_BINARY_DIR

(c'est ce que tu fais en passant DCMAKE_INSTALL_PREFIX=. à cmake)

bneveu commented 3 years ago

J'avais oublié make install mais après le make install , il ne trouve pas gaol (même problème que celui signalé par Gilles #493 )

make optimizer05 g++ -I/home/bertrand/ibex/ibex-develop/ibex-lib/build/include -I/home/bertrand/ibex/ibex-develop/ibex-lib/build/include/ibex -I/home/bertrand/ibex/ibex-develop/ibex-lib/build/include/ibex/3rd -I/usr/include/coin -O3 -DNDEBUG -std=c++11 -DIBEX_BENCHS_DIR=\"../benchs/solver\" -U__STRICT_ANSI__ -o optimizer05 optimizer05.cpp -L/home/bertrand/ibex/ibex-develop/ibex-lib/build/lib -L/home/bertrand/ibex/ibex-develop/ibex-lib/build/lib/3rd -libex -lgaol -lgdtoa -lultim /usr/lib/x86_64-linux-gnu/libClp.so /usr/lib/x86_64-linux-gnu/libCoinUtils.so /usr/lib/x86_64-linux-gnu/libbz2.so /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/liblapack.so /usr/lib/libblas.so /usr/lib/x86_64-linux-gnu/libm.so

/usr/bin/ld : ne peut trouver -lgaol /usr/bin/ld : ne peut trouver -lgdtoa /usr/bin/ld : ne peut trouver -lultim collect2: error: ld returned 1 exit status makefile:24 : la recette pour la cible « optimizer05 » a échouée make: *** [optimizer05] Erreur 1

cyrilbouvier commented 3 years ago

Ok je clos ce ticket, le problème est maintenant similaire à #493 qui est train d'être résolu

gchabert commented 3 years ago

Je confirme qu'il est résolu