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

[cmake] minor issue on "cmake" (in French) #498

Closed gchabert closed 3 years ago

gchabert commented 3 years ago

Lorsque je compile/installe ibex dans un répertoire build en ayant fait cmake -DBUILD_SHARE_LIBS=1 puis que je recommence depuis le même répertoire build en enlevant l'option -DBUILD_SHARE_LIBS=1, ibex continue d'être compilé/installé en dynamique.

Évidemment, si je supprime build et que je le recréée, pas de problème.

C'est peut-être normal; on n'est peut-être pas censé réutiliser le même répertoire avec deux commandes cmake différentes?

cyrilbouvier commented 3 years ago

Ce comportement est lié à CMake. Avec CMake, si tu relances la commande cmake avec le même répertoire de source et le même répertoire de build, il va utiliser un fichier de cache pour retrouver la valeur des variables que tu ne spécifies pas sur la ligne de commande (pour Ibex, ça sera le cas par exemple pour LP_LIB, INTERVAL_LIB, BUILD_SHARED_LIBS, ...).

Si tu veux réutiliser le même répertoire de build mais changer une variable, il faut la modifier sur la ligne de commande. Par exemple, pour ton cas d'utilisation:

cmake -DSHARED_BUILD_LIBS=ON .. # 1er appel à cmake
make # ou n'importe quelle autre commande
cmake -DSHARED_BUILD_LIBS=OFF # 2eme appel à cmake
make # ou n'importe quelle autre commande 
gchabert commented 3 years ago

OK, c'est super clair. Merci pour cette réponse détaillée!