簡體   English   中英

在另一個頭文件中包含外部庫的頭文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM