Прямо сейчас я должен сделать это, чтобы косвенно получить доступ к моим исходным заголовкам.
#pragam once
#include "../src/some_folder/some_header.hpp"
Но я хочу иметь доступ к нему вот так
#pragam once
#include "some_folder/some_header.hpp"
так он выглядит намного чище
По сути, поскольку я хочу, чтобы заголовки моей библиотеки были доступны косвенно через один основной заголовок с именем Some_Libaray_Name.hpp. Но я не знаю, как бы я это сделал. Кстати, моя библиотека - это проект CMake (C++).
По сути, поскольку я хочу, чтобы заголовки моей библиотеки были доступны косвенно через один основной заголовок, называемый
Some_Libaray_Name.hpp
.
Если основной заголовок включает в себя заголовок, этот заголовок либо должен быть системным заголовком, либо он должен быть заголовком, доступным во время компиляции. По этой причине ваша классификация этих заголовков кажется сомнительной. Я рекомендую переместить заголовки, которые (возможно, косвенно) включены в Some_Libaray_Name.hpp
, в каталог, содержащий Some_Libaray_Name.hpp
(в данном случае в подкаталог этого some_folder
); Это дает вам возможность сохранить некоторые заголовки закрытыми; это невозможно, если вы просто добавите исходный каталог как include dir.
Конечно, вы можете использовать target_include_directories
, чтобы добавить несколько включаемых каталогов:
# make include and src include dirs available to targets using target_link_libraries to link some_lib
target_include_directory(some_lib PUBLIC include src)
Вы можете установить каталог
../src
(преобразованный в абсолютный путь) в качестве включаемого каталога. В CMake это выполняется командой include_directories или, что предпочтительнее, target_include_directories.