我是 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 时。
将安装和构建阶段分开对我来说非常重要,因为构建阶段应使用用户权限完成,安装阶段应使用管理员权限完成。