Luaスタンドアロンと外部バイナリ

Luaスタンドアロンと外部バイナリ

私はLuaLaTexで私たちのための小さなプログラムを書いています。その目的は、与えられたuuidでQRコードを生成することです。 qrコードはページに印刷され、uuidはpdfのメタデータに保存されます。

texmfそれにもかかわらず、私のドキュメントのクラスファイルが呼び出すことができる実行可能ファイルをフォルダに含める方が良いと思いました。qrencode & convertQRコードを生成するには、次のluaスクリプト(Linux)を使用しますuuidqrcode.lua

#!/usr/bin/env lua 

function gen_qr_uuid ()
    local uuid = require 'uuid'
    -- uuid.seed(math.randomseed(os.time()))
    local encode = uuid()
    local name = encode
    local format = 'pdf'

    local qrencode = string.format(
        [[qrencode \
            --type=EPS \
            --output=%s.eps \
            --size=10 \
            --level=H \
            --margin=0 \
            --casesensitive \
            %s \
            ]], 
            name,
            encode)

    local convert = string.format(
        [[convert \
            %s.eps \
            %s.%s \
            ]],
            name,
            name,
            format)

    local rmeps = string.format("rm %s.eps", name)

    os.execute(qrencode)
    os.execute(convert)
    os.execute(rmeps)
end

for i=1, (arg[1] or 1) do
    gen_qr_uuid ()
end

このスクリプトをスタンドアロンの実行可能ファイルに変換するには、luastatic次のスクリプトを使用しましたmakeluaexec

#!/bin/sh
luastatic $1 `pkg-config --libs --cflags lua`

これにより実行可能ファイルがありますが、依然として依存関係があるため、qrencode & convert別のLinuxシステムに移動するときにツールをインストールする必要があります。これらのツールを自分で作成した実行可能ファイルにパッケージ化する方法はありますか?

答え1

はい。このqrencodeプログラムは単なるラッパーです。libqrencodeconvertコマンドはラッパーだけです。イメージマジシャン。これらのコマンドを呼び出す代わりに、コードから直接ライブラリ関数を呼び出します。バインディングでhttps://github.com/isage/lua-imagickそしてhttps://github.com/vincascm/qrencodeこれに便利です。その後、呼び出し時に関連するluastatic静的ライブラリを渡すだけです。

関連情報