Включить заголовочный файл внешней библиотеки в другой заголовочный файл - PullRequest
0 голосов
/ 18 февраля 2019

В настоящее время у меня есть следующая структура проекта, где целью каталога 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

1 Ответ

0 голосов
/ 18 февраля 2019

Поскольку вы не указываете libs_include_dirs для cli.c для сборки, компилятор не знает, как искать pqueue/pqueue.h.

Измените meson.build, чтобы включить libs_include_dirs.

diff --git a/meson.build b/meson.build
index 4087a00..3347466 100644
--- a/meson.build
+++ b/meson.build
@@ -8,5 +8,5 @@ cli_sources = [
 ]
 executable('cli',
            sources: cli_sources,
-           include_directories : graph_search_include_dirs,
+           include_directories : [graph_search_include_dirs, libs_include_dirs],
            link_with: [algs_lib])
...