尝试使用 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:没有这样的文件或目录”的主要内容,如果未能解决你的问题,请参考以下文章
错误:在 Linux 上使用 OpenGL 编译 C++ 程序时出现“GL/glfw3.h:没有这样的文件或目录”
尝试通过 c++ 程序中的 system() 函数使用 cl Visual Studio 命令进行命令行构建时出现 vcvars32.bat 问题