[英]Include header file of external library in another header file
當前,我具有以下項目結構,其中libs
目錄的目的是存儲從github下載的外部C庫,因為它們在我的OS倉庫中不可用:
├── 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
是:
libpqueue_sources = [
'pqueue/pqueue.c',
]
pqueue_lib = shared_library('pqueue', libpqueue_sources)
pqueue_dep = declare_dependency(link_with: pqueue_lib)
modules/meson.build
是:
algs_sources = [
'algorithms/a_star.c',
]
algs_lib = static_library('algorithms',
sources: algs_sources,
include_directories: libs_include_dirs,
dependencies: pqueue_dep)
和meson.build
是:
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
,但是當我將include移到a_star.c
,錯誤消失了。 可悲的是,我需要將其包括在頭文件中,因為我需要導出使用pqueue.h類型的結構。
有沒有一種方法可以在不使用../../libs/pqueue/pqueue.h
路徑的情況下將pqueue.h包含在../../libs/pqueue/pqueue.h
?
因為您沒有為cli.c
指定libs_include_dirs
來構建,所以編譯器不知道如何搜索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])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.