我正在编辑一个介子构建文件。
文件正常运行时当前存在的行。if cc.has_argument('-Wno-format-truncation')
default_cflags += '-Wno-format-truncation'
endif
我添加了一行,因为我想要调试信息:
default_cflags += '-ggdb -O0'
然而,这是用单引号解释的,并且破坏了make命令。
-Wno-missing-field-initializers -D_GNU_SOURCE -march=native '-ggdb -O0' -DALLOW_EXPERIMENTAL_API -MD -MQ
显然,cc
不喜欢这样,抛出了一个错误。是什么原因导致meson用单引号解释这个输出?我试过双引号和不引号,但这会导致其他错误。
编辑这是一个dpdk构建文件,所以编译器调用是:
executable('dpdk-' + name, sources,
include_directories: includes,
link_whole: link_whole_libs,
link_args: ldflags,
c_args: default_cflags,
dependencies: dep_objs)
标题>+=meson使用语法向数组中添加元素(append)。因此,当数组稍后被平摊并且检测到空格时,我猜就会使用引号。所以一个接一个地添加:
default_cflags += '-ggdb'
default_cflags += '-O0'
或更新为数组:
default_cflags += ['-ggdb, '-O0']
关于调试信息,请查看meson的核心选项:buildtype优化和. 您可以配置您的构建而不包括相关标志到介子。构建(如果满足您的需要)。
要使用的选项是--buildtype=debug
用于未优化的二进制,--buildtype=debugoptimized
用于使用-g -O2
构建的二进制。
作为列表对象传递这些CFLAGS参数的推荐方法。例如对于shared_library, static_library, executable
和自定义c_args : default_cflags
,其中default_cflags被声明为
default_cflags = []
...
...
...
if is_debug
default_cflags += ['-ggdb', '-O0']
endif
...
...