【发布时间】:2014-01-17 12:57:42
【问题描述】:
我有一个使用 cmake 构建的项目。 这个项目使用 avr-gcc 编译二进制文件,我使用 boost mpl 编译它的某些部分。
由于 avr-gcc 没有 /usr/include 作为默认包含路径,但 boost 安装在那里,我需要将其添加为包含路径,以便找到 boost。 不幸的是,将 -I/usr/include 添加到命令行会拉入 /usr/include 中的所有其他文件和目录,这似乎会导致与 avr 包含冲突,从而导致编译器错误。
我最初的解决方案涉及到 /usr/include/boost 在我的一个用户定义的包含目录中的软链接,以解决
#include <boost/mpl/*>
但是,我认为这不是非常独立于平台的,因此决定让 cmake 为 boost 添加包含路径。这再次导致编译器命令中出现“-I/usr/include”。
如何以与平台无关的方式解决此问题?
一个解决方案是让 cmake 为我创建链接以获得正确的包含目录。 但是,我认为整个符号链接解决方案很难看。 有没有更好的办法?
例如:是否有一些选项可以在别名下添加包含路径,例如:
-I/usr/include/boost:boost
哪个只会添加名称为 boost 的 boost 子文件夹以被 #include <boost/...> 指令包含?
【问题讨论】:
标签: c++ gcc include-path avr-gcc