Добавление расширения в Tcl / Tk macOS Frameworks - PullRequest
0 голосов
/ 23 января 2019

Мне удалось успешно скомпилировать Tcl / Tk Frameworks на macOS (следуя инструкциям здесь ). Я использую эти Frameworks внутри .app для распространения. Я хотел бы настроить свои Frameworks, добавив дополнительные расширения, например, Drag & Drop TkDND (кстати, я действительно считаю, что эта базовая функция GUI должна быть неотъемлемой частью Tk ...).

Инструкции здесь , похоже, относятся к добавлению расширения к обычной установке, а не к Framework. Я не нашел никаких явных инструкций. Извините, если вопрос наивный, но я очень неопытный Tcl / Tk. PS: мой .app получает доступ к Tk через Perl. Я был бы очень признателен за любую помощь / инструкции / ссылку.

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Это похоже на установку расширения в стандартном пути (/ usr / local / lib), но не в Tk.framework.Вероятно, «make instal» должен потребовать некоторые дополнительные значения.

0 голосов
/ 24 января 2019

Я не использую 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, что вызывает некоторые проблемы). У меня должен быть путь к локальной установке, расположенный ранее в 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 необходимо, потому что make-файл tkdnd имеет определенный аргумент, который не поддерживается компилятором (в Mojave). Таким образом, PKG_CFLAGS является копией того, что находится в make-файле без -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
...