Это заняло у меня некоторое время, но в конце концов я нашел решение. Я создал скрипт со следующим содержимым, которое помещаю в каталог graphviz.
INSTALLER_ROOT="/Users/wizardofkneup"
GVROOT="${INSTALLER_ROOT}/graphviz"
GVTARGET="${INSTALLER_ROOT}/Documents/xcode/VisualThinkingWorkspace/graphviz"
PLATFORM_DEVELOPER_BIN_DIR="/usr/bin"
./configure \
--disable-dependency-tracking \
--enable-shared=no \
--enable-static=yes \
--enable-ltdl=no \
--enable-swig=no \
--enable-tcl=no \
-srcdir=/Users/wizardofkneup/graphviz \
--with-codegens=no \
--with-cgraph=yes \
--with-expat=no \
--with-fontconfig=no \
--with-freetype2=no \
--with-ipsepcola=yes \
--with-libgd=no \
--with-xdot=yes \
--with-quartz=yes \
--with-visio=yes \
--with-x=no \
CC="${PLATFORM_DEVELOPER_BIN_DIR}/clang" \
CPP="${PLATFORM_DEVELOPER_BIN_DIR}/clang -E" \
CXX="${PLATFORM_DEVELOPER_BIN_DIR}/clang++" \
OBJC="${PLATFORM_DEVELOPER_BIN_DIR}/clang" \
LD="${PLATFORM_DEVELOPER_BIN_DIR}/ld"
make
rm -rf ${GVTARGET}
mkdir -p ${GVTARGET}
find . -type f -name '*_C.a' -exec cp -i {} ${GVTARGET} \;
find . -type f -name '*.h' -exec cp {} -i ${GVTARGET} \;
Еще несколько комментариев:
- Используйте Homebrew, чтобы получить исходники для graphviz.
brew install --build-from-source graphviz
- скопируйте и разархивируйте загруженные исходники из
~/Library/Caches/Homebrew
в директорию GRVIZ. (В моем случае /Users/wizardofkneup/graphviz)
- беги
sh autogen.sh
- скомпилируйте исходники с помощью вышеуказанного скрипта. Он копирует файлы, необходимые для вашего проекта, в
${GVTARGET}
Теперь мы можем сосредоточиться на нашем проекте Swift в Xcode.
Похоже, что текущие (= 2019) сборки graphviz зависят от glib. Чтобы иметь статический glib, его нужно сначала собрать локально. Для этого примените meson _build -Diconv=native
при его сборке. Возможно, сначала потребуется установить libiconv
.
Мой файл buildins.c:
#include "builtins.h"
extern gvplugin_library_t gvplugin_dot_layout_LTX_library;
extern gvplugin_library_t gvplugin_neato_layout_LTX_library;
extern gvplugin_library_t gvplugin_core_LTX_library;
extern gvplugin_library_t gvplugin_quartz_LTX_library;
extern gvplugin_library_t gvplugin_visio_LTX_library;
void loadGraphvizLibraries(GVC_t *gvc) {
gvAddLibrary(gvc, &gvplugin_dot_layout_LTX_library);
gvAddLibrary(gvc, &gvplugin_neato_layout_LTX_library);
gvAddLibrary(gvc, &gvplugin_core_LTX_library);
gvAddLibrary(gvc, &gvplugin_quartz_LTX_library);
gvAddLibrary(gvc, &gvplugin_visio_LTX_library);
}
Мой встроенный файл.h:
#ifndef builtins_h
#define builtins_h
#include "/Users/wizardofkneup/graphviz/lib/gvc/gvplugin.h" //
#include "gvc.h"
extern lt_symlist_t lt_preloaded_symbols[];
void loadGraphvizLibraries(GVC_t *gvc);
#endif /* builtins_h */
приложение Bridging-header.h
#include <gvc.h>
#import "builtins.h"
И конфигурация в Xcode.
![введите здесь описание изображения](https://i.stack.imgur.com/gc71Q.png)
Мне понадобилось позже это: не уверен, связано ли это с графикой. ![введите здесь описание изображения](https://i.stack.imgur.com/6jrl2.png)
Надеюсь, это поможет. Удачи. Дайте мне знать, если я что-то пропустил.
person
Wizard of Kneup
schedule
18.05.2017