我目前正在为嵌入式项目(例如:基于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]
...
答案 0 :(得分:1)
在此感谢@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