向Tcl/Tk macOS框架添加扩展

向Tcl/Tk macOS框架添加扩展,macos,frameworks,tcl,tk,Macos,Frameworks,Tcl,Tk,我已经能够在macOS上成功编译Tcl/Tk框架(遵循说明)。我在.app的发行版中使用这些框架。我想定制我的框架,添加额外的扩展,例如拖放TkDND(顺便说一句,我真的认为这个基本的GUI功能应该是Tk的组成部分…) 说明似乎是指将扩展添加到正常安装,而不是框架。我没有找到任何明确的指示。如果这个问题很幼稚,很抱歉,但我对Tcl/Tk非常缺乏经验。PS:my.app通过Perl访问Tk。我非常感谢您的帮助/说明/链接。我不使用tkdnd,因此我没有特定于该安装的答案 在我的构建脚本中添加了块,

我已经能够在macOS上成功编译Tcl/Tk框架(遵循说明)。我在.app的发行版中使用这些框架。我想定制我的框架,添加额外的扩展,例如拖放TkDND(顺便说一句,我真的认为这个基本的GUI功能应该是Tk的组成部分…)


说明似乎是指将扩展添加到正常安装,而不是框架。我没有找到任何明确的指示。如果这个问题很幼稚,很抱歉,但我对Tcl/Tk非常缺乏经验。PS:my.app通过Perl访问Tk。我非常感谢您的帮助/说明/链接。

我不使用tkdnd,因此我没有特定于该安装的答案

在我的构建脚本中添加了块,比如这个构建“tdom”扩展的块

cd $SRCDIR
cd tdom*
if [[ $? -eq 0 ]]; then
  make distclean
  ./configure \
      --exec-prefix=$INSTLOC \
      --prefix=$INSTLOC \
      --with-tcl=$INSTLOC/Library/Frameworks/Tcl.framework/tclConfig.sh
  make CFLAGS="-O2 -mmacosx-version-min=${macosxminver}"
  make install
fi
然而,链接到Tk库可能会使事情复杂化。每个包都是不同的,使用不同的变量。所以我需要下载tkdnd并构建它,看看是否有任何问题,所以期待对这个答案进行编辑

(编辑:我在中修复了脚本,因此 段落不再适用) 我对init.tcl脚本的更改不是很完美,正如您所看到的,当我通过“wish”运行时,加载了错误的包(wish与tclsh位于不同的位置,这会导致一些问题)。我应该让本地安装的路径位于前面的
自动路径中
。如果您正在使用我的脚本,您需要注意这一点

bll-mac:$ ../darwin/64/tcl/bin/tclsh
% package require tdom
0.9.1

bll-mac$ ../darwin/64/tcl/bin/wish
% package require tdom
0.8.3
% package require tdom 0.9.1
0.9.1
在(和)和普通安装之间没有任何区别,框架只是提供了一个资源位置的结构

编辑

下面的代码可以编译和安装tkdnd包。 重新定义PKG_CFLAGS是必要的,因为tkdnd makefile 定义了编译器不支持的参数(在Mojave上)。 因此,PKG_CFLAGS是makefile中内容的副本,不带
-fobjc gc

我只试过做一个
包需要tkdnd
。我不知道怎么用 包,所以我没有尝试其他任何东西

cd $SRCDIR
cd tkdnd*
if [[ $? -eq 0 ]]; then
  make distclean
  ./configure \
      --prefix=$INSTLOC \
      --exec-prefix=$INSTLOC \
      --with-tcl=$INSTLOC/Library/Frameworks/Tcl.framework \
      --with-tk=$INSTLOC/Library/Frameworks/Tk.framework
  make CLAGS_OPTIMIZE="-O2 -mmacosx-version-min=${macosxminver}" \
       PKG_CFLAGS="-DMAC_TK_COCOA -std=gnu99 -x objective-c"
  make install
fi

这似乎是在标准路径(/usr/local/lib)中安装扩展,而不是在Tk.framework中。“make instal”可能需要一些额外的值