1

我是 boost.build newby,虽然 bjam 很容易用于大多数编译任务,但我不知道如何做一些应该非常简单的事情:在系统中安装我的应用程序。

假设我有一个非常简单的项目,在树中有两个文件(除了 Jamroot)。

  • hello.cpp :一个 C++ 程序说它打印 /etc/hello.conf 的内容

  • 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

你写的似乎很好,除了两个问题。首先,最后一行应该是:

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

其次,install别名应该同时引用install-bininstall-etc。当您进行这些更改时,一切正常吗?

于 2009-10-29T20:30:51.207 回答