Question

Je suis un boost.build newby et bien que bjam soit assez facile à utiliser pour la plupart des tâches de compilation, je n’ai pas trouvé comment faire quelque chose qui devrait être très simple: installer mon application dans le système.

Disons que j'ai un projet très simple avec deux fichiers dans l'arborescence (en plus de Jamroot).

  • hello.cpp: un programme C ++ dit qu'il imprime le contenu de /etc/hello.conf

  • hello.conf: un hello.conf par défaut

Ce que je veux faire, c'est:

  • pouvoir compiler et lier hello.cpp sans rien installer à l’échelle du système
  • lorsqu'il est appelé avec une cible d'installation (et seulement alors):
    • copier le bonjour exécutable dans / usr / bin
    • copiez hello.conf dans / etc.

Ci-dessous, le bjam que j'ai commencé à écrire:

exe hello : hello.cpp ;
alias install : install-bin  install-etc ;
install install-bin : hello : <location>/usr/bin ;
install install-etc : hello.conf : <location>/etc ;

Mon problème est qu'en tant qu'utilisateur, je ne peux pas écrire dans / etc, ni dans / usr / bin et je souhaite que cela ne soit fait que lorsque vous appelez explicitement la cible d'installation, et non à chaque fois que je tape bjam.

Il est très important pour moi de séparer les étapes d'installation et de construction, car la construction doit se faire avec les droits de l'utilisateur et l'installation avec les droits de l'administrateur.

Était-ce utile?

La solution

Ce que vous avez écrit semble bien, à l'exception de deux questions. Tout d’abord, la dernière ligne devrait se lire:

install install-etc : hello.conf : <location>/etc ;
explicit install install-bin install-etc ;

Deuxièmement, l'alias install doit faire référence à la fois à install-bin et à install-etc . Lorsque vous effectuez ces modifications, les choses fonctionnent-elles?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top