C++ 存在缺少标头的介子生成错误

C++ 存在缺少标头的介子生成错误,c++,meson-build,C++,Meson Build,从这个简单的介子构建文件中,我在***行得到一个关于缺少头文件的错误: # meson.build - src/ subdir('config') subdir('testers') subdir('utilities') headers += [ ] mainPrj += [ 'entrypoint.cpp' ] autoTest += [ 'entrypoint_test.cpp' ] Source = [ headers, mainPrj ] Source

从这个简单的介子构建文件中,我在***行得到一个关于缺少头文件的错误:

# 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:错误:文件dataStructures.hpp不存在

标头确实存在,它位于目录
src/config/
中,它不出现在
src/meson.build
文件中,而是出现在
src/config/meson.build
中:

# meson.build - src/config/

headers += [
    'dataStructures.hpp',
    'interface.hpp'
]
如果我交换
dataStructures.hpp
interface.hpp
,我会得到
interface.hpp
的错误


我肯定是对
介子.build
文件做了一些错误,但我找不到什么。

您不需要列出头文件。只需添加包含目录,如下所示:

inc_dir = include_directories('path/to/include')
src_main = ...
executable('app', sources:srcs_main, dependencies:[project_dep])
...
test_main = ...
executable('unit_tests', sources:[test_main, test_specific_srcs], dependencies:[project_dep])
就你而言:

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[...])
并将其用于每个目标(例如应用程序和测试可执行文件),如下所示:

inc_dir = include_directories('path/to/include')
src_main = ...
executable('app', sources:srcs_main, dependencies:[project_dep])
...
test_main = ...
executable('unit_tests', sources:[test_main, test_specific_srcs], dependencies:[project_dep])

为什么在源代码中需要标题?标题通常不是可编译文件->它们包含在可编译文件中