在现代 C++ 中,库通常仅由头文件组成,无需任何源文件进行编译。要使用此类库,您需要向项目添加适当的包含和可能的定义。但是,对于大量外部库,记住哪些库是仅包含头文件的,哪些库需要链接到变得很麻烦。然而,使用 Boost.Build,可以将仅包含头文件的库声明为 Boost.Build 目标,并且所有依赖项都可以使用此类库,而无需记住它是否为仅包含头文件的库。
可以使用 alias
规则声明仅包含头文件的库,并将它们的包含路径指定为其使用需求的一部分,例如
alias my-lib : # no sources : # no build requirements : # no default build : <include>whatever ;
在 my-lib
的使用需求中指定的包含项会自动添加到其所有依赖项的构建属性中。依赖项无需关心 my-lib
是否为仅包含头文件的,并且以后可以将 my-lib
转换为常规编译库,而无需更改其依赖项的声明。
如果您已经为定义了仅包含头文件的库的项目声明了正确的使用需求,则无需为 alias
目标重复它们。
project my : usage-requirements <include>whatever ; alias mylib ;