自定义 tcl 环境
Custom tcl environment
是否可以创建自己的 tcl 环境?
基本上想要的是一个自己的 Tcl8.5 可执行文件,但其中嵌入了我自己的一些包。
这将使分发 tcl 应用程序变得更加容易。
看看 Tclkit and Kitgen Build System - 这些系统可以构建一个一体化文件 Tcl 运行时,您还可以自定义包含哪些包。
当然有可能。使用 Tcl 的标准方法之一是作为一种嵌入式语言:您只需 link 您的代码针对 Tcl 库并从那里开始。
如果你想让你的代码像 tclsh
的扩展版本一样工作,那么你只需调用 Tcl_Main()
at the right point, with one of the arguments that you pass in being a callback that will add the local packages/commands that you want to add. It's conventional to call such a function Tcl_AppInit
,但你可以随意调用它。
否则,您将更多地手动操作。
// Initialize the Tcl library first
Tcl_FindExecutable(argv[0]);
// Make the interpreter
Tcl_Interp *interp = Tcl_CreateInterp();
// Add your stuff in here
if (Tcl_EvalFile(interp, "your_main_script.tcl") != TCL_OK) {
// IMPORTANT: If things go wrong, print what happened. Saves debugging time!
fprintf(stderr, "error: %s\n", Tcl_GetString(Tcl_GetObjResult(interp)));
exit(1);
}
// Delete and clean up
Tcl_DeleteInterp(interp);
exit(0);
是否可以创建自己的 tcl 环境?
基本上想要的是一个自己的 Tcl8.5 可执行文件,但其中嵌入了我自己的一些包。
这将使分发 tcl 应用程序变得更加容易。
看看 Tclkit and Kitgen Build System - 这些系统可以构建一个一体化文件 Tcl 运行时,您还可以自定义包含哪些包。
当然有可能。使用 Tcl 的标准方法之一是作为一种嵌入式语言:您只需 link 您的代码针对 Tcl 库并从那里开始。
如果你想让你的代码像 tclsh
的扩展版本一样工作,那么你只需调用 Tcl_Main()
at the right point, with one of the arguments that you pass in being a callback that will add the local packages/commands that you want to add. It's conventional to call such a function Tcl_AppInit
,但你可以随意调用它。
否则,您将更多地手动操作。
// Initialize the Tcl library first
Tcl_FindExecutable(argv[0]);
// Make the interpreter
Tcl_Interp *interp = Tcl_CreateInterp();
// Add your stuff in here
if (Tcl_EvalFile(interp, "your_main_script.tcl") != TCL_OK) {
// IMPORTANT: If things go wrong, print what happened. Saves debugging time!
fprintf(stderr, "error: %s\n", Tcl_GetString(Tcl_GetObjResult(interp)));
exit(1);
}
// Delete and clean up
Tcl_DeleteInterp(interp);
exit(0);