在介子中,有没有办法覆盖交叉构建定义文件中的内置选项?
Is there a way, in meson, to overwrite the built-in options from the cross build definition file?
我目前正在评估嵌入式项目的不同构建系统(例如:基于 FreeRTOS),我遇到了介子。我觉得很好,主要是有一个交叉构建定义文件来定义我的项目需要如何编译的想法。
尽管如此,我确实对一些基本选项有疑问,例如:
- b_pch
- b_staticpic
即默认设置为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]
...
在此感谢@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
我目前正在评估嵌入式项目的不同构建系统(例如:基于 FreeRTOS),我遇到了介子。我觉得很好,主要是有一个交叉构建定义文件来定义我的项目需要如何编译的想法。
尽管如此,我确实对一些基本选项有疑问,例如:
- b_pch
- b_staticpic
即默认设置为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]
...
在此感谢@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