仅添加包含路径的特定子目录

时间:2014-01-17 12:57:43

标签: c++ gcc include-path avr-gcc

我有一个使用cmake构建的项目。 这个项目使用avr-gcc来编译二进制文件,我使用boost mpl来处理它的某些部分。

由于avr-gcc没有将/ usr / include作为默认包含路径但是在那里安装了boost,我需要将其添加为包含路径以便找到boost。 不幸的是,在命令行中添加-I / usr / include会拉入/ usr / include中的所有其他文件和目录,这似乎会引入与avr包含的冲突,从而导致编译器错误。

我的初始解决方案涉及到我的一个用户定义的include目录中的/ usr / include / boost的软链接以解析

#include <boost/mpl/*>

但是,我认为这不是非常独立于平台,并决定为cmake添加包含路径以进行提升。这又导致了&#34; -I / usr / include&#34;存在于编译器命令中。

如何以平台无关的方式解决这个问题?

解决方案是让cmake为我创建链接以获取正确的包含目录。 但是,我认为整个符号链接解决方案很难看。 我能做些什么更好的事情吗?

例如:是否有一些选项可以在别名下添加包含路径,如:

-I/usr/include/boost:boost

哪个只会在名称提升下添加boost子文件夹以包含#include <boost/...>指令?

1 个答案:

答案 0 :(得分:0)

我认为至少有两种选择:

  1. avr-gcc默认包含哪些文件?让我们说具体是/opt/avr-gcc/include。那么对您有用的是-I/opt/avr-gcc/include -I/usr/include

  2. 另一种选择是在不同的目录中安装Boost,并在/usr/include中使用它而不是Boost。例如,您可以创建/opt/boost,然后在命令行上使用-I/opt/boost(或其下的子目录)。