仅将包含路径的特定子目录添加到包含
Add only specific subdirectory of an include path to includes
我有一个使用cmake构建的项目。这个项目使用avr-gcc来编译二进制文件,我使用boost-mpl来编译其中的一些部分
由于avr-gcc没有/usr/include作为默认的include路径,但boost安装在那里,所以我需要将其添加为include路径以便找到boost。不幸的是,在命令行中添加-I/usr/include会拉入/usr/include中的所有其他文件和目录,这似乎会引入与avr-include的冲突,从而导致编译器错误。
我最初的解决方案包括在我的一个用户定义的include目录中建立一个到/usr/include/boost的软链接,以解决
#include <boost/mpl/*>
然而,我认为这不是非常独立于平台的,并决定让cmake添加用于boost的include路径。这再次导致编译器命令中出现"-I/usr/include"。
如何以与平台无关的方式解决此问题?
一个解决方案是让cmake为我创建链接,以获得正确的include目录。然而,我认为整个符号链接的解决方案很丑陋。我能做些更好的事情吗?
例如:是否有一些选项可以在别名下添加包含路径,如:
-I/usr/include/boost:boost
哪一个会只在名称boost下添加boost子文件夹,以便#include <boost/...>
指令可以包含?
我至少看到两个选项:
-
默认情况下,
avr-gcc
包括来自哪里的文件?假设具体性是/opt/avr-gcc/include
。那么-I/opt/avr-gcc/include -I/usr/include
可能对你有用。 -
另一种选择是将Boost安装在不同的目录中,并使用该目录而不是
/usr/include
中的Boost。例如,您可以创建/opt/boost
,然后在命令行中使用-I/opt/boost
(或其下的子目录)。
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 编译包含字符串的代码时遇到问题
- c++库的公共头文件中应该包含什么
- 将包含C样式数组的对象初始化为成员变量(C++)
- 是否需要删除包含对象的"pair"?
- CMake 子目录 - 编译测试子项目时,包含的头文件没有此类文件或目录
- 节点构建失败。无法在包含目录的子目录中找到库头文件
- 这是在生成文件中包含子目录的正确方法吗?
- 是什么让 clang 在包含路径的子目录中看起来?
- 如何在子目录中生成包含源的生成文件
- 仅将包含路径的特定子目录添加到包含
- Eclipse 编译器包含路径子目录
- Eclipse 在子目录中找不到包含文件
- 使用子目录中的包含进行构建
- 包含子目录中的 G++ 头文件
- 修改生成文件以包含子目录
- VS2015 在子目录中找不到包含标头
- 在子目录中包含路径
- 试图将文件包含在带有代码块的子目录中