в том числе заголовочные файлы из разных каталогов? - PullRequest
11 голосов
/ 24 декабря 2011

Я работаю над проектом и все время зацикливаюсь на том, как я должен импортировать файлы из другого каталога.Вот как организованы некоторые мои файлы:

-stdafx.h
-core/
-->renderer.cpp
-shapes/
-->sphere.h
-->sphere.cpp

как я могу получить доступ к stdafx.h и shapes/sphere.h из core/renderer.cpp?

Ответы [ 3 ]

9 голосов
/ 24 декабря 2011

Есть много способов. Вы можете #include "../stdafx.h", например. Более распространенным является добавление корня вашего проекта в путь включения и использование #include "shapes/sphere.h". Или иметь отдельный каталог с заголовками в пути включения.

2 голосов
/ 05 декабря 2016

Один (плохой) способ сделать это - включить относительный путь к заголовочному файлу, который вы хотите включить как часть строки #include. Например:

включает "заголовки / myHeader.h"

включает "../moreHeaders/myOtherHeader.h"

Недостатком этого подхода является то, что он требует от вас отражать структуру каталогов в вашем коде. Если вы когда-нибудь обновите структуру каталогов, ваш код больше не будет работать.

Лучший способ - сообщить вашему компилятору или IDE, что у вас есть несколько файлов заголовков в каком-то другом месте, чтобы они смотрели там, когда не могут найти их в текущем каталоге. Обычно это можно сделать, установив «include path» или «search directory» в настройках проекта IDE.

В Visual Studio вы можете щелкнуть правой кнопкой мыши свой проект в обозревателе решений и выбрать «Свойства», а затем вкладку «Каталоги VC ++». Отсюда вы увидите строку под названием «Включить каталоги». Добавьте туда включаемые каталоги.

В Code :: Blocks перейдите в меню Project и выберите «Build Options», затем вкладку «Search directoryies». Добавьте туда включаемые каталоги.

Используя g ++, вы можете использовать опцию -I, чтобы указать альтернативный каталог включения.

g ++ -o main -I / source / включает main.cpp

Приятной особенностью этого подхода является то, что если вы когда-либо измените структуру каталогов, вам нужно будет изменить только один компилятор или настройку IDE вместо каждого файла кода.

1 голос
/ 24 декабря 2011

Вы можете использовать относительные пути:

#include "../stdafx.h"
#include "../shapes/sphere.h"

или добавить каталог вашего проекта в ваш компилятор, включить путь и ссылаться на них как обычно:

#include "stdafx.h"
#include "shapes/sphere.h"

Вы можете использовать /I опция командной строки для добавления пути или установки пути в настройках вашего проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...