对于交叉编译,我需要指定 MCU 类型作为 Ada、C 和理论上的 C++ 编译器的选项。
我怎样才能做到这一点,并且在构建依赖项时也应用它?
在https://alire.ada.dev/docs/catalog-format-spec.html#build-profiles-and-switches我看到了如何替换例如每个构建配置文件的优化选项。
但是,这不是添加,而是替换,除此之外,似乎只适用于 Ada 编译器。
在向我的
alire.toml
文件添加任何内容之前,.gpr
目录中生成的 config
文件包含:
Ada_Compiler_Switches := Ada_Compiler_Switches &
(
"-Og" -- Optimize for debug
,"-ffunction-sections" -- Separate ELF section for each function
,"-fdata-sections" -- Separate ELF section for each variable
,"-g" -- Generate debug info
,"-gnatwa" -- Enable all warnings
对于
alire.toml
,然后我添加:
[build-switches]
release.optimization = ["-mmcu=avr32dd20"]
development.optimization = ["-mmcu=avr32dd20"]
validation.optimization = ["-mmcu=avr32dd20"]
并在
.gpr
目录下的config
文件中获取以下内容:
Ada_Compiler_Switches := Ada_Compiler_Switches &
(
"-mmcu=avr32dd20"
,"-g" -- Generate debug info
,"-gnatwa" -- Enable all warnings
因此信息被替换而不是添加(正如根据解释所预期的那样),不幸的是仅适用于 Ada 而不是其他语言。
我该如何解决这个问题?
当时(v2.0),您只能更换开关。要附加,您需要按照 @simon-wright 指示的方式进行操作,即使用顶级 .gpr 文件来扩展配置文件中定义的开关。顶级 .gpr 在创建后不会被 Alire 编辑。