尝试使用 makefile 编译 C++ 程序时出现“致命错误:boost/regex.hpp:没有这样的文件或目录”

Posted

技术标签:

【中文标题】尝试使用 makefile 编译 C++ 程序时出现“致命错误:boost/regex.hpp:没有这样的文件或目录”【英文标题】:"fatal error: boost/regex.hpp: No such file or directory" when trying to compile C++ program using a makefile 【发布时间】:2017-05-03 19:24:53 【问题描述】:

我正在尝试编译一个名为"SPECIES Identification of Taxonomic Mentions in Text" 的开源软件。 我在 MacOS 上

我下载了源代码(可以找到here),移到目录中,使用命令make进行编译。这是返回的错误:

g++ -fpic -pthread -Wall -O3 -o organisms organisms.cxx -lm -lboost_regex
In file included from batch_tagger.h:5:0,
                 from organisms.cxx:3:
tagger.h:7:27: fatal error: boost/regex.hpp: No such file or directory
compilation terminated.
make: *** [organisms] Error 1

我使用 brew install boost 安装了 C++ boost 库并再次尝试了上述步骤(它不起作用)。

我尝试将 boost 目录放到包含源代码的目录中(它不起作用)。

有什么建议/帮助吗?

【问题讨论】:

它(这个软件)是否有自述文件或关于如何构建的建议? 不幸的是,它非常简单。这是一段摘录:“要执行 SPECIES、ORGANISMS 标记器,只需运行通过一个命令行参数编译源代码获得的二进制可执行文件”。你可以看到它没有解释如何使用 boost 正确编译。我想它很简单,这就是它被忽略的原因,但不幸的是我对 C++/C++ 库知之甚少。 【参考方案1】:

你需要告诉编译器在哪里可以找到 boost 头文件。

您需要使用包含路径选项来指定可以找到提升标头的位置,使用-I/path/to/boost/include

然后使用您的代码中的#include <boost/regex.hpp> 包含该文件。

【讨论】:

对不起,我对 C++/C++ 库真的不太了解。我在哪里准确指定路径? 好的。我尝试在我的编译命令中添加-I /path/to/boost/(现在是g++ -I /path/to/boost/ -fpic -pthread -Wall -O3 -o organisms organisms.cxx -lm -lboost_regex),但仍然出现错误? @JohnG:我怀疑 boost 是否安装在您机器上的 /path/to/boost/include 中。这是一个示例,您必须找到 boost 头文件所在的位置,并将 path/to/boost/include(“boost 包含文件夹的路径”)替换为可以找到 boost/regex.hpp 的路径。另请注意,-I 和路径之间没有空格。例如,在我的机器上,我需要指定-I/usr/include(这是无用的,因为默认使用/usr/include),因为regex.hpp 位于/usr/include/boost/regex.hpp 我很抱歉。当我说 /path/to/boost/ 时,我也用它作为例子。这是对编译器的新调用:g++ -I/usr/local/boost_1_64_0 -fpic -pthread -Wall -O3 -o organisms organisms.cxx -lm -lboost_regex。它现在返回一个新的但非常冗长的错误(太长而无法复制和粘贴)。 boost/regex.hpp 肯定在路径usr/local/boost_1_64_0 @JohnG:如果错误 fatal error: boost/regex.hpp: No such file or directory 消失了,您应该接受这个答案并提交另一个问题,并附上您的新错误消息......事实上,boost/regex.hpp 是您最初的问题,它现已得到答复。

以上是关于尝试使用 makefile 编译 C++ 程序时出现“致命错误:boost/regex.hpp:没有这样的文件或目录”的主要内容,如果未能解决你的问题,请参考以下文章

使用 cmake 编译带有 v8 库的 C++ 程序

错误:在 Linux 上使用 OpenGL 编译 C++ 程序时出现“GL/glfw3.h:没有这样的文件或目录”

Makefile的编写

尝试插入地图时出现 C++ 编译问题

Makefile 结合了 fltk 和 C++ 文件

尝试通过 c++ 程序中的 system() 函数使用 cl Visual Studio 命令进行命令行构建时出现 vcvars32.bat 问题