通常,Boost.Build 会自动处理隐式依赖项。例如,对于 C++ 文件,所有 #include
语句都会被找到并处理。用户可能需要帮助的唯一方面是生成的文件的隐式依赖关系。
默认情况下,Boost.Build 在一个主目标内处理此类依赖关系。例如,假设主目标“app”有两个源文件,“app.cpp”和“parser.y”。后一个源文件被转换为“parser.c”和“parser.h”。然后,如果“app.cpp”包含“parser.h”,Boost.Build 将检测到此依赖关系。此外,由于“parser.h”将被生成到构建目录中,因此该目录的路径将自动添加到包含路径中。
使这种机制跨主目标边界工作是可能的,但会带来一定的开销。因此,如果存在来自其他主目标文件的隐式依赖关系,则必须使用 <implicit-dependency>
功能,例如
lib parser : parser.y ; exe app : app.cpp : <implicit-dependency>parser ;
以上示例告诉构建系统,在扫描“app”的所有源文件以查找隐式依赖关系时,它应该将“parser”中的目标视为潜在的依赖关系。