2009-10-29 21 views
1

Je suis un boost.build newby et alors que bjam est assez facile à utiliser pour la plupart des tâches de compilation et je n'ai pas compris comment faire quelque chose qui devrait être vraiment simple: installer mon application dans le système . Dites que j'ai un projet très simple avec deux fichiers dans l'arbre (en plus de Jamroot).installation simple en utilisant bjam

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

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

Ce que je veux à faire est:

  • pouvoir compiler et lier hello.cpp sans installer quoi que ce soit le système de large
  • lorsqu'elle est appelée avec une installation cible (et alors seulement):
    • copie bonjour exécutable/usr/bin
    • copie hello.conf/etc.

Ci-dessous le bjam 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 que en tant qu'utilisateur, je ne peux pas écrire/etc ni/usr/bin et je veux que cela être fait seulement en appelant explicitement la cible d'installation, pas chaque fois que je tape bjam.

Il est très important pour moi de séparer les étapes d'installation et de construction car l'étape de construction devrait être faite en utilisant les droits de l'utilisateur et installer la scène en utilisant les droits d'administrateur.

Répondre

3

Ce que vous avez écrit semble bien, sauf pour deux problèmes. Tout d'abord, la dernière ligne devrait lire:

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

En second lieu, l'alias install doivent se référer à la fois install-bin et install-etc. Lorsque vous effectuez ces changements, est-ce que les choses fonctionnent?

+0

Merci. Il résout le "comment copier la partie du fichier de configuration" (comme vous l'avez souligné, après tout, c'était juste une sorte de faute de frappe de moi en oubliant de taper installer comme cible :-(J'ai supprimé cette partie de la question). l'autre problème: comment effectuer une installation uniquement lorsque vous appelez explicitement une cible donnée et ne le faites pas par défaut.C'est probablement aussi simple qu'une règle à ajouter :-( – kriss

+0

ajouter "installation explicite install-bin install-etc;" Jamfile –

+0

OK, c'est vraiment ce que je cherchais (si vous pouvez éditer votre réponse ce serait bien parce que la réponse est seulement dans le commentaire.) Je me demande toujours pourquoi bjam effectuer un lien pour installer au lieu de copier le fichier existe, mais ce n'est pas vraiment un problème (cela évite également d'avoir à arrêter et redémarrer l'exécution d'exe sous Linux, mais je ne suis pas sûr que ce soit par conception, cela ressemble à un effet secondaire). – kriss