存在缺失 header 的介子构建错误
Error from meson build for a missing header which exists
从这个简单的 Meson 构建文件中,我在第 *** 行收到关于缺少 header 文件的错误:
# meson.build - src/
subdir('config')
subdir('testers')
subdir('utilities')
headers += [
]
mainPrj += [
'entrypoint.cpp'
]
autoTest += [
'entrypoint_test.cpp'
]
Source = [ headers, mainPrj ]
SourceTest = [ headers, autoTest ]
MyProgExe = executable('MyProg', Source) ***
MyProgTestExe = executable('MyProgTest', SourceTest)
test('Internal test', MyProgTestExe)
这是错误信息:
src/meson.build:***:0: ERROR: File dataStructures.hpp does not exist.
header 确实存在,它在目录 src/config/
中,它没有出现在 src/meson.build
文件中,但在 src/config/meson.build
:
中
# meson.build - src/config/
headers += [
'dataStructures.hpp',
'interface.hpp'
]
如果我交换 dataStructures.hpp
和 interface.hpp
,我会得到 interface.hpp
的错误。
我一定是对 meson.build
文件做错了什么,但我找不到什么。
您不需要列出您的头文件。只需添加这样的包含目录:
inc_dir = include_directories('path/to/include')
你的情况:
inc_dir = include_directories('src/config')
MyProgExe = executable('MyProg', Source, include_directories: inc_dir, ...)
我通常做的是声明项目依赖:
project_dep = declare_dependency(include_directories: inc_dir, sources: srcs,
dependencies[...])
并将其用于每个目标(例如应用程序和测试可执行文件),如下所示:
src_main = ...
executable('app', sources:srcs_main, dependencies:[project_dep])
...
test_main = ...
executable('unit_tests', sources:[test_main, test_specific_srcs], dependencies:[project_dep])
如果有人在构建 shared_library
时遇到同样的问题,Elvis 给出的答案也有效!
inc_dir = include_directories('src/config')
shared_library(
...,
include_directories: inc_dir,
...,
)
从这个简单的 Meson 构建文件中,我在第 *** 行收到关于缺少 header 文件的错误:
# meson.build - src/
subdir('config')
subdir('testers')
subdir('utilities')
headers += [
]
mainPrj += [
'entrypoint.cpp'
]
autoTest += [
'entrypoint_test.cpp'
]
Source = [ headers, mainPrj ]
SourceTest = [ headers, autoTest ]
MyProgExe = executable('MyProg', Source) ***
MyProgTestExe = executable('MyProgTest', SourceTest)
test('Internal test', MyProgTestExe)
这是错误信息:
src/meson.build:***:0: ERROR: File dataStructures.hpp does not exist.
header 确实存在,它在目录 src/config/
中,它没有出现在 src/meson.build
文件中,但在 src/config/meson.build
:
# meson.build - src/config/
headers += [
'dataStructures.hpp',
'interface.hpp'
]
如果我交换 dataStructures.hpp
和 interface.hpp
,我会得到 interface.hpp
的错误。
我一定是对 meson.build
文件做错了什么,但我找不到什么。
您不需要列出您的头文件。只需添加这样的包含目录:
inc_dir = include_directories('path/to/include')
你的情况:
inc_dir = include_directories('src/config')
MyProgExe = executable('MyProg', Source, include_directories: inc_dir, ...)
我通常做的是声明项目依赖:
project_dep = declare_dependency(include_directories: inc_dir, sources: srcs,
dependencies[...])
并将其用于每个目标(例如应用程序和测试可执行文件),如下所示:
src_main = ...
executable('app', sources:srcs_main, dependencies:[project_dep])
...
test_main = ...
executable('unit_tests', sources:[test_main, test_specific_srcs], dependencies:[project_dep])
如果有人在构建 shared_library
时遇到同样的问题,Elvis 给出的答案也有效!
inc_dir = include_directories('src/config')
shared_library(
...,
include_directories: inc_dir,
...,
)