我有一个用cmake建立的项目。这个项目是使用avr-gcc编译二进制文件,我使用boost mpl的一些部分。
由于avr没有/usr/include作为默认包含路径,但是boost安装在那里,因此我需要将其添加为包含路径,这样就可以找到boost。不幸的是,将-I/usr/include添加到命令行中会拉入/usr/include中的所有其他文件和目录,这似乎会导致与avr包含的冲突,从而导致编译器错误。
我的初始解决方案涉及到我的用户定义的包含目录中的/usr/ include /boost的软链接,以解决
#include <boost/mpl/*>然而,我认为这并不是非常独立的平台,并决定为cmake添加包含路径的boost。这再次导致编译器命令中出现"-I/usr/include“。
如何以平台不可知论的方式解决这个问题?
一个解决方案是让cmake为我创建链接,以获得正确的include目录。然而,我认为整个符号链接解决方案是丑陋的。还有什么更好的办法吗?
例如:是否有一些选项可以在别名下添加包含路径,如:
-I/usr/include/boost:boost哪个只会添加名称boost下面的boost子文件夹才能被#include <boost/...>指令包括在内?
发布于 2014-01-19 16:55:53
我认为至少有两种选择:
avr-gcc在哪里包含文件?让我们假设这是/opt/avr-gcc/include的具体性。那么,可能对您有用的是-I/opt/avr-gcc/include -I/usr/include。/usr/include中的Boost。例如,您可以创建/opt/boost,然后在命令行上使用-I/opt/boost (或该子目录下的子目录)。https://stackoverflow.com/questions/21186613
复制相似问题