在gcc
和clang
中,可以使用-I
或-isystem
将包含目录传递给编译器。
不同之处在于,只有在isystem
指令中使用尖括号<>
而不是引号#include
时才会搜索""
个路径。此外,某些警告出现在系统标题中时会被抑制(因为您可能无法解决系统标题中的问题)。 (据我所知,可能还有其他细微差别。)
并非所有编译器都支持这一概念,它是一个实现问题,而不是标准的一部分。
cmake
专门支持此功能,并且会做出正确的事情&#34;在支持它的编译器上。
scons
历史上并不支持它,但有很多方法可以解决这个问题,而且最近也有内置some support。
boost.build
又称bjam
,b2
是否有同等功能?在文档和示例中,include目录使用<include>path/to/files
指定,并作为lib
或exe
目标的要求传递。但我没有找到任何<system_include>
或类似功能。
如果它不存在,有什么方法可以解决它吗?除非正确使用这些标记,否则某些项目不会在gcc
和clang
上没有警告的情况下构建。
答案 0 :(得分:1)
不,boost.build中没有这样的功能。您可以做的是有条件地为支持系统包含的特定工具集启用-isystem
,例如:
exe myexe : mysrc.cpp : <toolset>gcc:<cxxflags>-isystem/path/to/include/files ;