2013-11-28 6 views
0

В C++ нужно ли скопировать все необходимые файлы заголовков в каталог основного файла C++?Включая заголовки в C++

Ex. У меня OpenCV установлен глобально, и привязки Python работают хорошо. Однако, если я пишу:

#include "opencv2/highgui/highgui.hpp" 

Я получил ошибку «не найден». Нужно ли копировать их из своего глобального места установки в каталог проекта? Я уверен, что для этого должен быть хорошо установленный набор практик, поэтому я не хочу сам себя ткнуть в темноте.

+6

Обычно компилятору, где искать включаемые файлы. И это зависит от компилятора и/или IDE. – juanchopanza

+0

@juanchopanza ... и где фактическая установка lib размещена на машине разработки. –

+0

Вам не нужно копировать заголовки или даже библиотеки в свой проект. Однако вам может потребоваться настроить переменную среды, параметр компилятора в файле проекта или некоторые параметры в среде IDE, которая сообщает компилятору, где искать. – drescherjm

ответ

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), которые могут использоваться для статической или временной привязки.

+0

Учебник был полезен, все функционировало по своему желанию. Также оцените предложение, используя флаги. –

+0

Звучит неплохо. Я также думаю, что предложение Томаса Бадана хорошее. Вы можете попробовать это тоже. Я тоже поддержал его. – Homer6

3

Если он установлен во всем мире, вы должны сообщить компилятору смотреть глобально, то есть,

#include <opencv2/highgui/highgui.hpp> 
Смежные вопросы