1

私はboost.build初心者ですが、bjamはほとんどのコンパイルタスクで非常に使いやすいですが、システムにアプリケーションをインストールするという、本当に簡単なはずのことを行う方法がわかりませんでした。

ツリーに 2 つのファイル (Jamroot 以外) を持つ非常に単純なプロジェクトがあるとします。

  • hello.cpp : /etc/hello.conf の内容を出力すると言う C++ プログラム

  • hello.conf : デフォルトの hello.conf

私がやりたいことは次のとおりです。

  • システム全体に何もインストールせずに、hello.cpp をコンパイルしてリンクできるようにする
  • インストール ターゲットで呼び出された場合 (その場合のみ):
    • 実行可能な hello を /usr/bin にコピーします
    • hello.conf を /etc にコピーします。

以下は、私が書き始めた bjam です。

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

私の問題は、ユーザーとして /etc にも /usr/bin にも書き込めないことです。bjam を入力するたびにではなく、明示的にインストール ターゲットを呼び出すときにのみこれを実行したいのです。

構築段階はユーザー権限を使用して実行し、インストール段階は管理者権限を使用して実行する必要があるため、インストール段階と構築段階を分離することは非常に重要です。

4

1 に答える 1

3

2つの問題を除いて、あなたが書いたものは問題ないようです。まず、最後の行は次のようになります。

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

次に、installエイリアスはとの両方を参照する必要がinstall-binありinstall-etcます。これらの変更を行うとき、物事は機能しますか?

于 2009-10-29T20:30:51.207 に答える