Как #include файлы в отдельных каталогах, используя разные IDE? - PullRequest
1 голос
/ 18 декабря 2011

Я работаю над проектом C ++, использующим XCode в MacOS X, и сейчас начинаю переносить его на Linux с помощью IDE Code :: Blocks.

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

Вот пример этой проблемы:

folder1/foo.h

folder2/dog.h

foo.h includes dog.h with: `#include "dog.h"`

Он отлично работает на XCode, если оба файла в одном проекте, но если я попробую его в Code :: Blocks, он обнаружит ошибку.

Я могу исправить эту проблему в Code :: Blocks, изменив код для использования относительного пути включения, такого как:

#include "../folder2/dog.h"

К сожалению, при этом Xcode не может найти файл.

Как я могу исправить эту проблему, чтобы я мог скомпилировать один и тот же код в нескольких IDE? Я хотел бы не бросать все исходники в одну папку. Должен ли я использовать оператор препроцессора, подобный следующему:

#if XCODE
#include "dog.h"
#else
#include "../folder2/dog.h"
#endif

Ответы [ 2 ]

3 голосов
/ 18 декабря 2011

Измените структуру, чтобы у одного проекта был только один общий каталог include:

/project/
        /src/*.cpp
        /include/*.hpp
                /folder1/dog.hpp
                /folder2/cat.hpp

Теперь произнесите #include <config.hpp> и #include <folder1/dog.hpp> и т. Д. И добавьте к своим флагам компилятора:

-I ${PROJECT_DIR}/include
3 голосов
/ 18 декабря 2011

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

Я не знаю Xcode или Codeblocks, но я уверен, что должна быть какая-то конфигурация проекта, которая контролируетони ищут файлы #include.

...