arm - 在介子中,有没有办法覆盖交叉构建定义文件中的内置选项?
问题描述
我目前正在评估嵌入式项目的不同构建系统(例如:基于 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
推荐阅读
- xcode - 为什么不调用我的 UITextField 委托方法?
- jwt - 解码从授权码收到的 JWT 令牌
- java - 使用 foreach 迭代集合对象
- visual-studio-2017 - Visual Studio 2017 不签署程序集
- python - 如何在 Python/Linux 中更快地加载和重新采样 (MP3) 音频文件?
- python - 如何理解这个相等和赋值语句的逻辑?
- php - 如何从预订页面获取 ID 并在针对该 ID 提交表单后将其显示给管理员?
- node.js - SELF_SIGNED_CERT_IN_CHAIN 和 DEPTH_ZERO_SELF_SIGNED_CERT 有什么区别
- sql - 如何为值列表应用 SQL 更新?
- amazon-web-services - 我无法对 ec2 实例执行标记。我错过了什么