gpt4 book ai didi

c - 将外部库的头文件包含在另一个头文件中

转载 作者:行者123 更新时间:2023-11-30 14:41:47 26 4
gpt4 key购买 nike

目前我有以下项目结构,其中 libs 目录的目的是存储我从 github 下载的外部 C 库,因为它们在我的操作系统存储库上不可用:

├── 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])

当我尝试在 a_star.h 中创建 #include "pqueue/pqueue.h" 时,出现了问题,它显示 /modules/algorithms/a_star.h:5:10: fatal error :pqueue/pqueue.h: 没有这样的文件或目录,但是当我将包含内容移至 a_star.c 时,错误消失了。遗憾的是,我需要将其包含在头文件中,因为我需要导出一个使用 pqueue.h 类型的结构

有没有办法将 pqueue.h 包含在 a_star.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])

关于c - 将外部库的头文件包含在另一个头文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54739163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com