16 个不稳定版本 (3 个破坏性更新)

0.4.8 2023 年 6 月 14 日
0.4.5 2023 年 5 月 20 日
0.4.4 2023 年 3 月 28 日
0.4.0 2022 年 12 月 15 日
0.2.2 2022 年 3 月 7 日

#38构建实用工具

Download history 33/week @ 2024-03-12 39/week @ 2024-03-19 24/week @ 2024-03-26 61/week @ 2024-04-02 41/week @ 2024-04-09 24/week @ 2024-04-16 146/week @ 2024-04-23 45/week @ 2024-04-30 45/week @ 2024-05-07 43/week @ 2024-05-14 35/week @ 2024-05-21 90/week @ 2024-05-28 35/week @ 2024-06-04 52/week @ 2024-06-11 38/week @ 2024-06-18 48/week @ 2024-06-25

每月 186 次下载
6 个 crate 中使用 (4 个直接使用)

MIT/Apache

160KB
3K SLoC

wolfram-app-discovery

Crates.io License Documentation

API 文档 | CLI 文档 | 变更日志 | 贡献

关于

查找 Wolfram 语言的本地安装和 Wolfram 应用。

本 crate 提供:

示例

使用 API

定位本计算机上的默认 Wolfram 语言安装

use wolfram_app_discovery::WolframApp;

let app = WolframApp::try_default()
    .expect("unable to locate any Wolfram applications");

// Prints a path like:
//   $InstallationDirectory: /Applications/Mathematica.app/Contents/
println!("$InstallationDirectory: {}", app.installation_directory().display());

另请参阅: WolframApp::try_default()

使用命令行工具

定位本计算机上的默认 Wolfram 语言安装

$ wolfram-app-discovery default
App type:                           Mathematica
Wolfram Language version:           13.1.0
Application directory:              /Applications/Wolfram/Mathematica.app

有关 wolfram-app-discovery 命令行界面的更多信息,请参阅 CommandLineHelp.md

假设您有一个以下 C 程序,该程序通过 Wolfram LibraryLink 界面提供了一个函数,您希望从 Wolfram 语言编译和调用它

#include "WolframLibrary.h"

/* Adds one to the input, returning the result  */
DLLEXPORT int increment(
  WolframLibraryData libData,
  mint argc,
  MArgument *args,
  MArgument result
) {
    mint arg = MArgument_getInteger(args[0]);
    MArgument_setInteger(result, arg + 1);
    return LIBRARY_NO_ERROR;
}

为了成功编译此程序,C 编译器需要能够找到包含的 "WolframLibrary.h" 头文件。我们可以使用 wolfram-app-discovery 来获取适当目录的路径

# Get the LibraryLink includes directory
$ export WOLFRAM_C_INCLUDES=`wolfram-app-discovery default --raw-value library-link-c-includes-directory`

然后将该值传递给 C 编译器

# Invoke the C compiler
$ clang increment.c -I$WOLFRAM_C_INCLUDES -shared -o libincrement

编译后的库可以使用 LibraryFunctionLoad 加载到 Wolfram 语言中,然后调用

func = LibraryFunctionLoad["~/libincrement", "increment", {Integer}, Integer];

func[5]  (* Returns 6 *)

安装 wolfram-app-discovery

下载 wolfram-app-discovery 版本。

wolfram-app-discovery 命令行工具的预编译二进制文件在 GitHub 发布页面可供所有主流平台使用。

使用 cargo

wolfram-app-discovery 可以通过执行 cargo(Rust 软件包管理器)来安装,如下所示

$ cargo install --features=cli wolfram-app-discovery

这将安装来自 crates.io 的最新版本的 wolfram-app-discovery

配置

用于定位 Wolfram 语言安装的默认方法(WolframApp::try_default())将使用以下步骤尝试定位任何本地安装,返回第一个找到的

  1. 如果设置了,则使用 WOLFRAM_APP_DIRECTORY 环境变量指定的位置。
  2. 如果 wolframscriptPATH 上,则使用它来定位系统安装。
  3. 检查操作系统应用程序目录。

配置示例

指定要使用的特定 Wolfram 语言安装(在 macOS 上)

$ export WOLFRAM_APP_DIRECTORY="/Applications/Mathematica.app"

此环境变量同时由 wolfram-app-discovery 库和命令行可执行文件检查。

许可证

根据您的选择,受以下任一许可证的许可

Wolfram 应用程序许可证

Wolfram 应用程序受与 wolfram-app-discovery 不同的许可证条款的约束。

Wolfram Engine Community Edition 是 Wolfram 语言的免费发行版,许可用于个人和非生产用途。

贡献

除非您明确声明,否则您根据 Apache-2.0 许可证定义的任何旨在包含在作品中的贡献,都将根据上述条款双重许可,不附加任何额外条款或条件。

有关更多信息,请参阅 CONTRIBUTING.md

有关在向此项目贡献力量时执行常见开发任务的说明,请参阅 Development.md

有关维护此项目的说明,请参阅 Maintenance.md

依赖项

~0–38MB
~541K SLoC