gpt4 book ai didi

c++ - 仅将包含路径的特定子目录添加到包含

转载 作者:太空宇宙 更新时间:2023-11-04 13:56:39 25 4
gpt4 key购买 nike

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

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

我最初的解决方案涉及到/usr/include/boost 在我的一个用户定义的包含目录中的软链接(soft link)以解决

#include <boost/mpl/*>

但是,我认为这不是很独立于平台,因此决定让 cmake 添加用于 boost 的包含路径。这再次导致“-I/usr/include”出现在编译器命令中。

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

一个解决方案是让 cmake 为我创建链接以获得正确的包含目录。但是,我认为整个符号链接(symbolic link)解决方案很难看。有什么我可以做的更好的事情吗?

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

-I/usr/include/boost:boost

这将只添加名称 boost 下的 boost 子文件夹,以包含在 #include <boost/...> 中。指令?

最佳答案

我至少看到两个选项:

  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(或其下的子目录)。

关于c++ - 仅将包含路径的特定子目录添加到包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21186613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com