首页 > 解决方案 > 在介子中,有没有办法覆盖交叉构建定义文件中的内置选项?

问题描述

我目前正在评估嵌入式项目的不同构建系统(例如:基于 FreeRTOS),我遇到了介子。我觉得很好,主要是有一个交叉构建定义文件来定义我的项目需要如何编译的想法。

不过,我确实对一些基本选项有疑问,例如:

也就是说,默认情况下,设置为true。在我的项目中,这些选项会生成错误的二进制文件...

正如介子所提出的,目前的解决方案是:

meson debug --cross-file boards/SensGate/meson_config_stm32l4_gcc8.ini -Db_pch=false -Db_staticpic=false
cd debug && ninja hex

但不知何故,我觉得必须在交叉构建定义文件之外定义编译和链接器选项并不好......

我想知道是否有办法覆盖文件本身中的这些选项......

如果不是,你认为我应该在介子项目中创建一张票来请求这个功能吗?

我希望是这样的:

[binaries]
c = 'arm-none-eabi-gcc'

[buildin_option] # New section?
b_pch = false
b_staticpic = false

[properties]
objcopy = 'arm-none-eabi-objcopy'
objcopy_args = [
    ...]
c_args = [
    ...]
c_link_args = [
    ...]

[host_machine]
...

标签: armmeson-build

解决方案


感谢@Matt 在这里的支持。

我的交叉构建定义文件如下所示:

[binaries]
...

[properties]
...
project_configuration = [
    'b_pch=false',
    'b_staticpic=false']
...

[host_machine]
...

在我的根目录meson.build下,我有:

# Define the project
project('Project', 'c', default_options: meson.get_cross_property('project_configuration'))
...

这样,我只需要调用命令:

meson debug --cross-file boards/SensGate/meson_config_stm32l4_gcc8.ini
cd debug && ninja hex

推荐阅读