0

老实说,我一直在尝试构建用于网络的Qhull。我完全迷路了。我已经安装了Emscripten SDK,并尝试阅读指南。据我所知,似乎有两种方法可以编译像这样的大型项目:我可以将文件作为参数传递给emcc,或者我可以制作自己的自定义 Makefile 以某种方式为我做这件事。但我既不知道如何将多个文件作为参数传递,也不知道 Makefile 是如何工作的。

在网上搜索之后,我设法找到了旧 Qhull 版本的这个端口,它带有自己的 Makefile:

QHULL_PATH = ./src/libqhull
TARGET = qhull.js
EMCC = ../emscripten/emcc
PREJS = ./src/pre.js
POSTJS = ./src/post.js
MAIN = ./src/main.c
EXPORTJS = "['_run_qhull']"
CFLAGS = -O1

SOURCES := $(shell find $(QHULL_PATH) -type f -name '*.c')

all: $(TARGET)
    @echo  "Done"

$(TARGET): $(SOURCES) $(PREJS) $(POSTJS) $(MAIN)
    $(EMCC) $(CFLAGS) $(SOURCES) $(MAIN) -s EXPORTED_FUNCTIONS=$(EXPORTJS) --pre-js $(PREJS) --post-js $(POSTJS) -o $(TARGET)

clean:
    rm -rf $(TARGET)

不幸的是,Makefile 是 Unix 格式的,我在经历了大约两个小时的挫折后才弄明白。我不知道如何让它在 Windows 上运行。

那么,我该怎么做才能让最新版本的 Qhull 在 Javascript 中运行?

我使用的是 Windows,我当前的 IDE 是 Dev-C++。

4

1 回答 1

1

因此,如果您不熟悉编译,使用 emscripten 编译大型库将是一个很大的挑战。我建议阅读有关编译的 emscripten 文档

看起来 Qhull 既有 MakeFile 又有 CMakeLists.txt。我建议尝试 CMake。
在 linux 上使用 CMake 和 emscripten 的典型方法是这样的:

mkdir embuild
cd embuild
emcmake cmake ..
emmake make

我从未在 Windows 上编译过(我使用 linux),但我相信(至少在使用 Cmake 时)它是相似的。
这可能不会在第一次尝试时起作用。
如果(经过多次尝试)你不能让它工作,你可以尝试手动编译 qhull emcc。一开始看起来更难,但从长远来看,我通常会得到更少的错误。

于 2020-10-31T20:52:50.570 回答