Je travaille sur un projet qui prend beaucoup de temps à construire (10-15) minutes. J'ai recompilé pour vérifier s'il y a une erreur de compilation. Maintenant, je veux changer le répertoire d'installation afin d'avoir une nouvelle version de l'exécutable avec les nouvelles modifications. Existe-t-il une méthode pour simplement modifier le chemin d'installation afin que le "make install" s'installe vers un nouvel emplacement plutôt que l'ancien?
Les makefiles générés par CMake prennent en charge la convention de codage DESTDIR pour les makefiles. Ainsi, vous pouvez remplacer l'emplacement d'installation par défaut en définissant la variable DESTDIR
lors de l'appel de make:
$ make install DESTDIR=/opt/local
Il n'est pas nécessaire de relancer CMake.
Je ne sais pas si cela est généralement vrai, mais je peux donner un exemple d'une application pour laquelle la réponse acceptée par sakra
ne fonctionne pas correctement. Si vous modifiez le répertoire d'installation en modifiant DESTDIR
lors de l'installation d'ITK, il ajoutera simplement DESTDIR
à son chemin d'installation déjà formé:
make install DESTDIR=/opt/local
[...]
-- Installing: /opt/local/usr/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]
D'un autre côté, suivre cette réponse par Fraser
donnera des chemins d'installation corrects sans recompilation:
cmake -DCMAKE_INSTALL_PREFIX=/opt/local /path/to/ITK_source
make install
[...]
-- Installing: /opt/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]
Exécuter CMake avec -DCMAKE_INSTALL_PREFIX=<somewhere different to last time>
ne devrait pas obliger votre projet à être recompilé. Si vous passez d'autres paramètres de ligne de commande à CMake, par exemple modifier les drapeaux du compilateur, qui serait forcer une reconstruction des cibles affectées, mais changer simplement le préfixe d'installation ne le fera pas.
La définition canonique de DESTDIR et du préfixe est: les fichiers sont installés dans le préfixe $ DESTDIR $, mais préparés comme si leur emplacement d'installation final n'était que $ prefix.
Donc, DESTDIR est uniquement destiné aux personnes qui construisent des packages ou des tarballs de binaires; CMAKE_INSTALL_PREFIX est destiné à tous ceux qui souhaitent spécifier où les binaires créés doivent se trouver à la fin.
Au cas où quelqu'un n'utilise pas CMake, il existe une méthode pour le faire dans Makefile. Si vous avez un fichier Makefile.config généré dans votre répertoire de génération, recherchez le prefix
. Ce prefix
est l'installation path
où les binaires/en-têtes, etc. seront installés. Changer cela installera les binaires/en-têtes dans le path
modifié.