Compilation 编译在变量(IDL)中具有路径的文件

Compilation 编译在变量(IDL)中具有路径的文件,compilation,idl-programming-language,Compilation,Idl Programming Language,通常,当我想编译一个文件时,我可以使用 .compile /home/.../file.pro 但假设这个路径只有一个变量。然后输入下面的代码 path = '/home/.../file.pro' .compile path 返回错误,因为编译器认为path是一个文件,但找不到它。如何避免这种情况?您想要使用的是RESOLVE\u例程命令。它将文件名作为字符串(因此可以在变量中传递),并且有几个关键字;_函数可能是您最需要使用的函数。使用/IS_函数编译函数,将其保留在编译过程中 以下是文

通常,当我想编译一个文件时,我可以使用

.compile /home/.../file.pro
但假设这个路径只有一个变量。然后输入下面的代码

path = '/home/.../file.pro'
.compile path

返回错误,因为编译器认为
path
是一个文件,但找不到它。如何避免这种情况?

您想要使用的是RESOLVE\u例程命令。它将文件名作为字符串(因此可以在变量中传递),并且有几个关键字;_函数可能是您最需要使用的函数。使用/IS_函数编译函数,将其保留在编译过程中

以下是文档:


在IDL中经常这样做有点愚蠢,但是混合变量和执行命令(.run等)的另一种策略是使用IDL_IDLBridge()对象

这与CALL_过程、CALL_函数或EXECUTE的区别在于IDL_IDLBridge实例化了一个交互式进程或类似命令行的环境。这意味着您可以包含执行命令,从而在foreach循环中嵌入.COMPILE,该循环迭代文件搜索的结果,以编译目录中的所有.PRO文件

您还可以使用它将多个.PRO文件打包成一个.SAV文件。请注意,IDL_IDLBridge是一个子进程,因此您无法访问它编译的任何内容,但您可以通过传递的变量使用SAVE/RESTORE

oBridge = IDL_IDLBridge()
oBridge->execute, '.compile ' + some_var