添加参数

通常需要指定额外的编译器参数。Meson 提供两种方法来实现这一点:全局参数和每个目标的参数。

全局参数

全局编译器参数使用以下命令设置。例如,你可以这样做。

add_global_arguments('-DFOO=bar', language : 'c')

这使得 Meson 将定义添加到所有 C 编译中。通常,你会使用此设置来设置全局设置的标志。请注意,要设置 C/C++ 语言标准(GCC 中的 -std=c99 参数),你可能需要使用 project() 函数的默认选项。有关详细信息,请参阅 参考手册.

全局参数有一些限制。它们都必须在指定任何构建目标之前定义。这确保了整个项目中构建的每个源文件都使用相同的全局标志,只有一个例外。作为项目配置的一部分运行的编译测试不使用这些标志。原因是可能需要在有或没有特定标志的情况下运行测试编译以确定构建设置。出于这个原因,测试不使用这些全局参数。

你应该只使用此设置来设置最基本的标志,不要设置调试或优化标志。相反,它们应该通过选择适当的构建类型来指定。

项目参数

项目参数与全局参数的工作方式类似,只是它们只在当前子项目中有效。用法很简单

add_project_arguments('-DMYPROJ=projname', language : 'c')

这会将编译器标志添加到当前项目中的所有 C 源代码。

每个目标参数

每个目标参数的定义同样简单。

executable('prog', 'prog.cc', cpp_args : '-DCPPTHING')

这里,我们创建一个带有额外参数的 C++ 可执行文件,该参数在编译期间使用,但不在链接期间使用。

你可以在 参考表格 中找到其他语言的参数名称。

指定额外的链接器参数的方式相同

executable('prog', 'prog.cc', link_args : '-Wl,--linker-option')

搜索结果是