it-roy-ru.com

в том числе заголовочные файлы из разных каталогов?

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

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

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

11
Stas Jaro

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

9
Michael Krelin - hacker

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

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

include "../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 вместо каждого файла кода.

2
Pushpak Sharma

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

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

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

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

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

1
Dave Rager