Так что я становлюсь большим мальчиком и делю свой проект на отдельные исходные файлы.
Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь соответствовать стандартам, но должно быть что-то что я пропустил, потому что у меня есть эта проблема:
В моем каталоге проекта есть несколько подкаталогов:
include
lib
...
sr c
Кажется, не рекомендуется иметь #include "include/some_file.h"
, что кажется достаточно справедливым. Насколько я понимаю, нормальная установка состоит в том, чтобы установить папку include в качестве относительного каталога, чтобы во время любой компиляции файла в исходном коде, если компилятор считывал #include "cat/dog.h"
, он фактически искал файл в include / cat / dog.h .
Моя проблема возникает тогда, когда я хочу включить файл из моей библиотеки, lib . Кажется, я должен использовать #include "../lib/my_library/giraffe.h"
, но я знаю, что использование относительного пути включает в себя fr agile, и это не рекомендуется.
Я знаю, что библиотечные файлы обычно должны быть предварительно скомпилированы, и что я могу включите их с флагами компиляции (и аналогичными методами в IDE, например VS), что означает, что он все равно будет компилироваться, даже если я никогда не напишу #include "../lib/my_library/giraffe.h"
и смогу использовать содержимое файла. Но я также знаю, что хорошо писать #include
файла всякий раз, когда вы непосредственно используете его в заголовке / cpp.
Извинения за вопрос noob, но как мне примирить это на первый взгляд? противоречивые стандарты?