在C ++中,是否需要将任何所需的头文件复制到主C ++文件的目录中?
实施例。我全局安装了OpenCV,Python绑定运行良好。但是,如果我写:
#include "opencv2/highgui/highgui.hpp"
我收到“未找到”错误。我是否需要将这些从全局安装位置复制到项目目录?我确信必须有一套完善的做法,所以我不想自己在黑暗中瞎逛。
答案 0 :(得分:4)
这取决于您使用的操作系统和构建工具链,但作为使用linux,gcc和cmake的示例,本文将介绍如何使用opencv进行构建。
http://docs.opencv.org/trunk/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html
正如您在find_package
指令中看到的那样,cmake正在搜索opencv包含文件。
显然,您可以直接使用g++ -I
指定包含路径,但让cmake为您找到它的优点是,如果您在不同的系统上编译,它将更有可能被找到。如果找不到文件,它也会给你一个错误。
最后,您应该确保拥有“dev”文件,而不仅仅是库。 dev文件将包含要包含的标头。同时,库只有共享对象(*.so
)和归档(*.a
),可用于静态或运行时链接。
答案 1 :(得分:3)
如果全局安装,则需要通知编译器全局查看,即
#include <opencv2/highgui/highgui.hpp>