工程中的代码生成器
通过图形界面生成代码
通过命令行或交互式脚本生成代码
要在*Engee*中生成代码,请使用命令 恩吉。generate_code在 命令行 或 脚本编辑器
.
子系统的代码生成
要生成子系统代码,请使用"subsystem_name"参数指定子系统的完整路径。 子系统的完整路径包括其在模型中的名称。
功能签名:
engee.generate_code(
model_path::String,
output_dir::String;
subsystem_name::String = nothing,
subsystem_id::String = nothing,
target::String = "c",
template_path::String = ""
)
论点:
-
'path/to/modelname.engee::String':生成代码的模型的绝对或相对路径。 参数可以是模型对象(由`engee获得的模型类型对象。gcm’功能)。
-
'path/to/output_dir::String`:保存生成代码的目录的绝对或相对路径。 如果’output_dir’目录不存在,它将自动创建。
-
'subsystem_name=path/to/subsystem::String':生成代码的原子子系统的完整路径。
-
'subsystem_id=subsystem_id::String':生成代码的原子子系统的唯一标识符。
-
'target::String`:指定代码生成的语言。 支持的语言是’c'(默认)或’Verilog'。
-
'template_path::String`:用户的路径。代码生成中使用的jl模板(例如,具有main函数)。 如果省略,则使用默认模板。
如果指定了参数’subsystem_name’或’subsystem_id',则执行子系统的代码生成。 如果没有指定它们,则为整个模型执行生成。
例子:
# 为子系统生成C代码
engee.generate_code("/user/newmodel_1.engee", "/user/newmodel_1/Subsystem")
# 根据原子子系统的id生成代码
engee.generate_code(
"/user/newmodel_1.engee",
"/user/newmodel_1/Subsystem";
subsystem_name = "Subsystem",
subsystem_id = "88275e0b-a049-4bb5-b8c7-057badd1b536"
)
如果指定了不正确的`subsystem_id`,即使正确指定了`subsystem_name`,生成也会失败。 在这种情况下,*Engee*将无法找到子系统,并且不会生成代码。 因此,仅使用subsystem_name更可靠(如果它在模型中是唯一的)。
模型的代码生成
要从整个模型生成代码,请指定模型的路径和保存生成代码的目录。 如果模型已经在*Engee*中打开,那么您可以通过使用函数获得的模型对象 恩吉。gcm)。
功能签名:
engee.generate_code(
path/to/modelname.engee::String,
path/to/output_dir::String;
target::String
)
论点:
-
'path/to/modelname.engee::String':生成代码的模型的绝对或相对路径。 参数可以是模型对象(由`engee获得的模型类型对象。gcm’功能)。
-
'path/to/output_dir::String`:保存生成代码的目录的绝对或相对路径。 如果’output_dir’目录不存在,它将自动创建。
-
'target::String`:指定代码生成的语言。 支持的语言是’c'(默认)或’Verilog'。
例子:
# 模型的绝对路径
engee.generate_code("/user/newmodel_1.engee", "/user/newmodel_1/codegen_output")
# 模型的相对路径
engee.generate_code("newmodel_1.engee", "newmodel_1/codegen_output")
# 获取当前开放模型并从中生成代码
m = engee.gcm()
engee.generate_code(m, "/user/newmodel_1/codegen_output")