c – 为什么这个boost头文件不包括在内

c – 为什么这个boost头文件不包括在内,第1张

概述我正在Mac上用cmake构建我的c程序.编译器给我以下错误: error: boost/filesystem.hpp: No such file or directory 触发错误的行如下: #include "boost/filesystem.hpp" 要么 #include <boost/filesystem.hpp> 我使用以上哪项不会改变错误 但是在我的CMakeLists.txt中,我 我正在Mac上用cmake构建我的c程序.编译器给我以下错误:
error: boost/filesystem.hpp: No such file or directory

触发错误的行如下:

#include "boost/filesystem.hpp"

要么

#include <boost/filesystem.hpp>

我使用以上哪项不会改变错误

但是在我的CMakeLists.txt中,我将以下列方式包含boost头:

FIND_PACKAGE(Boost) MESSAGE("Boost information:") MESSAGE("  Boost_INCLUDE_Dirs: ${Boost_INCLUDE_Dirs}") MESSAGE("  Boost_liBRARIES: ${Boost_liBRARIES}") MESSAGE("  Boost_liBRARY_Dirs: ${Boost_liBRARY_Dirs}") INCLUDE_DIRECTORIES(${Boost_INCLUDE_Dirs})link_DIRECTORIES(${Boost_liBRARY_Dirs})

在cmake过程中,Boost包含dirs已填充“/ opt / local / include /”,此文件夹包含一个包含filesystem.hpp的文件夹boost

Boost在生成Makefile时给出以下消息,我只复制boost部分:

-- Boost version: 1.38.0-- Found the following Boost librarIEs:Boost information:Boost_INCLUDE_Dirs: /opt/local/includeBoost_liBRARIES: Boost_liBRARY_Dirs: /opt/local/lib-- Configuring done

当运行make VERBOSE = 1此行包含错误:

cd /Users/janusz/documents/workspace/ImageMarker/DeBUG/src && /usr/bin/c++ -O3 -Wall -Wno-deprecated -g -verbose -I/Users/janusz/documents/workspace/ImageMarker/src/. -o CMakefiles/ImageMarker.dir/FaceRecognizer.cpp.o -c /Users/janusz/documents/workspace/ImageMarker/src/FaceRecognizer.cpp/Users/janusz/documents/workspace/ImageMarker/src/FaceRecognizer.cpp:8:32: error: boost/filesystem.hpp: No such file or directorymake[2]: *** [src/CMakefiles/ImageMarker.dir/FaceRecognizer.cpp.o] Error 1

你明白为什么编译器没有选择/ opt / local / include目录?

如果您需要更多信息,我很乐意提供

解决方法 首先使用
FIND_PACKAGE(Boost required)

而不是

FIND_PACKAGE(Boost)

这样,在开始任何编译之前,如果没有找到它,cmake会给你一个很好的错误消息.如果没有将环境变量BOOST_ROOT设置为/ opt / local(这是安装前缀).
此外,您将不得不链接到文件系统库,所以你想要

FIND_PACKAGE(Boost COMPONENTS filesystem required)

供以后使用

target_link_librarIEs(mytarget ${Boost_fileSYstem_liBRARY})

输入

cmake --help-module FindBoost

在shell中获取cmake安装中的Boost查找模块的文档.

PS:一个例子

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)project(Foo)find_package(Boost COMPONENTS filesystem required)include_directorIEs(${Boost_INCLUDE_Dirs})add_executable(foo main.cpp)target_link_librarIEs(foo   ${Boost_fileSYstem_liBRARY})

main.cpp中

#include <boost/filesystem.hpp>#include <vector>#include <string>#include <cstdio>#include <cstddef>namespace fs = boost::filesystem;using namespace std;int main(int argc,char** argv){  vector<string> args(argv+1,argv+argc);  if(args.empty())  {    printf("usage: ./foo SOME_PATH\n");    return EXIT_FAILURE;  }  fs::path path(args.front());  if(fs::exists(path))    printf("%s exists\n",path.string().c_str());  else    printf("%s doesn't exist\n",path.string().c_str());  return EXIT_SUCCESS;}
总结

以上是内存溢出为你收集整理的c – 为什么这个boost头文件不包括在内全部内容,希望文章能够帮你解决c – 为什么这个boost头文件不包括在内所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1252481.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存