В настоящее время у меня есть следующая структура проекта, где целью каталога libs
является хранение внешних библиотек C, которые я загружаю с github, поскольку они недоступны в репозиториях моей ОС:
├── cli
│ └── cli.c
├── libs
│ ├── meson.build
│ └── pqueue
│ ├── pqueue.c
│ └── pqueue.h
├── modules
│ ├── algorithms
│ │ ├── a_star.c
│ │ └── a_star.h
│ ├── meson.build
├── meson.build
Где libs/meson.build
is:
libpqueue_sources = [
'pqueue/pqueue.c',
]
pqueue_lib = shared_library('pqueue', libpqueue_sources)
pqueue_dep = declare_dependency(link_with: pqueue_lib)
modules/meson.build
is:
algs_sources = [
'algorithms/a_star.c',
]
algs_lib = static_library('algorithms',
sources: algs_sources,
include_directories: libs_include_dirs,
dependencies: pqueue_dep)
и meson.build
is:
project('graph-search', 'c')
graph_search_include_dirs = include_directories('modules')
libs_include_dirs = include_directories('libs')
subdir('libs')
subdir('modules')
cli_sources = [
'cli/cli.c'
]
executable('cli',
sources: cli_sources,
include_directories : graph_search_include_dirs,
link_with: [algs_lib])
Моя проблема возникает, когда я пытаюсь#include "pqueue/pqueue.h"
внутри a_star.h
, там написано /modules/algorithms/a_star.h:5:10: fatal error: pqueue/pqueue.h: No such file or directory
, но когда я перемещаю включение в a_star.c
, ошибка исчезает.К сожалению, мне нужно включить его в заголовочный файл, потому что мне нужно экспортировать структуру, которая использует тип pqueue.h
Есть ли способ включить pqueue.h в a_star.h без использования путей, таких как ../../libs/pqueue/pqueue.h