【问题标题】:Adding extension to Tcl/Tk macOS Frameworks向 Tcl/Tk macOS 框架添加扩展
【发布时间】:2019-06-17 06:15:15
【问题描述】:

我已经能够在 macOS 上成功编译 Tcl/Tk 框架(按照说明 here)。我在 .app 中使用这些框架进行分发。我想自定义我的框架,添加额外的扩展,例如 Drag&Drop TkDND(顺便说一句,我真的认为这个基本的 GUI 功能应该是 Tk 不可或缺的一部分......)。

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

【问题讨论】:

    标签: macos frameworks tcl tk


    【解决方案1】:

    我不使用 tkdnd,所以我没有特定于该安装的答案。

    添加到我的script 我的构建脚本中有块,例如构建“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 并构建它,看看是否有任何问题,所以期待即将对此答案进行编辑。

    (编辑:我将脚本固定在the original question,所以以下 段落不再适用) 我对 init.tcl 脚本的更改不是很完美,如您所见,当我通过“wish”运行时加载了错误的包(wish 与 tclsh 位于不同的位置,这会导致一些问题)。我应该在auto_path 中找到本地安装的路径。如果您使用我的脚本,则需要注意这一点。

    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
    

    framework(和b)与普通安装之间确实没有任何区别,框架只是提供了资源定位的结构。

    编辑

    似乎以下工作可以编译和安装 tkdnd 包。 PKG_CFLAGS 的重新定义是必要的,因为 tkdnd makefile 定义了一个编译器不支持的参数(在 Mojave 上)。 所以 PKG_CFLAGS 是 makefile 中没有 -fobjc-gc 的内容的副本。

    我只试过package require 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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多