LabVIEWCLIとTaskfileを使ってLabVIEWAppBuild on Ubuntu
LabVIEWCLIはLabVIEW Linux(Ubuntu)でも使えたので、そのメモ
Taskfileとは
Goで書かれたローカル環境で動作するTaskRunner、WindowsでもLinuxでも動作する。
おもにビルドやデプロイの自動化などに使う
設定をyamlで記述する。Makefileに比べると記述しやすい?
詳細は
taskfile.dev
LabVIEWでTaskRunnuer的なものとして、最近、LabVIEW開発環境と一緒にインストールされるようになった「MGI Solution Explorer」があり、こちらは複数プロジェクトを一つのソリューション(一つの設定ファイル)にまとめて、プロジェクトに設定されているビルド情報を使って、まとめてビルドが実行できるようにするというツールです。デバッグ版とリリース版を切り替えたり、バージョンを指定できたりと、ほんのり便利そうな機能がついています。プロジェクト一つでも使えます。VI実行も登録できるようなので、決まった配布先があればデプロイなんかもできそうです。
普通にLabVIEW開発環境からプロジェクトファイルを開いてビルドすることが多いのですが、CI/CDで開発サイクルを少しでも自動化するのが良しとされる時流ですので、こうしたツールも取り入れていく必要があるのでしょう。
が、しかし、「MGI Solution Explorer」は、Windows版のみでLinux版はありません。
LabVIEW Linux(Ubuntu)で似たようなことをするには、ということでTaskfileの出番です。前置き長い。
LabVIEWアプリのビルドはLabVIEW開発環境(GUI)からでも実行できますが、コマンドラインからビルドするにはLabVIEWCLIを使います。
LabVIEWCLIのオプション指定が長いので、Taskfileの設定ファイルに保存しておくとオプション覚えたり調べる手間が省けます。
Taskfile.ymlが保存されているフォルダで、"task --list"とすると、定義されているタスクの一覧が表示されます。
$ task --list
task: Available tasks for this project:
* build: Build LabVIEW App
* clean: clean
* default: task list
"task build"とすると、LabVIEWCLIでのビルドが実行されます。
LabVIEWCLI started logging in file: /tmp/lvtemporary_901495.log
Using LabVIEW: "/usr/local/natinst/LabVIEW-2025-64/labview"
LabVIEW launched successfully.
Connection established with LabVIEW at port number 3363.
Operation output:
Generated files are:
/home/<username>/LvMiniTimerApp/builds/exe/LvMiniTimerApp
/home/<username>/LvMiniTimerApp/builds/exe/LvMiniTimerApp.aliases
/home/<username>/LvMiniTimerApp/builds/exe/LvMiniTimerApp.conf
ExecuteBuildSpec operation succeeded.
[Taskfile.yaml]
# yaml-language-server: $schema=https://taskfile.dev/schema.json
version: '3'
vars:
LABVIEW_BIN_PATH: "/usr/local/natinst/LabVIEW-2025-64/labview"
PWD_PATH:
sh: pwd
PARENT_PATH:
sh: dirname $(pwd)
PROJECT_PATH: "{{.PWD_PATH}}/LvMiniTimerApp.lvproj"
EXEFOLDER_PATH: "{{.PARENT_PATH}}/builds/exe"
tasks:
default:
desc: task list
cmds:
- task -l
silent: true
build:
desc: Build LabVIEW App
cmds:
- task: clean
- LabVIEWCLI -LabVIEWPath {{.LABVIEW_BIN_PATH}} -OperationName ExecuteBuildSpec -ProjectPath {{.PROJECT_PATH}}
- LabVIEWCLI -LabVIEWPath {{.LABVIEW_BIN_PATH}} -OperationName CloseLabVIEW
- ls -l {{.EXEFOLDER_PATH}}
silent: true
clean:
desc: clean
cmds:
- rm -f {{.EXEFOLDER_PATH}}/*
silent: true
[ファイルフォルダ構成]
example treeview
LabVIEWCLIでビルドするには、まずビルドに使用するLabVIEWの実行ファイルのフルパスが必要なため、変数定義で”vars: LABVIEW_BIN_PATH"で定義しています。
LabVIEWCLIでのビルド指定には、"-OperationName ExecuteBuildSpec"という長いパラメータ指定が必要です。
ターゲット名やビルド名も指定できますが、それぞれ1つしかないなら省略してもビルドできます。
あとは、LabVIEWプロジェクトファイルのパスをフルパスで指定する必要があります。(LabVIEWCLIはカレントディレクトリからの指定ができない)
環境や配置したフォルダに合わせて変えるのは面倒なので、"pwd"コマンドを使ってカレントディレクトリを取得してパスを合成しています。
変数定義の"PROJECT_PATH: "{{.PWD_PATH}}/LvMiniTimerApp.lvproj""がそれです。
LabVIEWビルドは、すでに実行ファイルがあるとビルド実行してくれないので、ビルドする前に古いファイルを削除するように仕掛けています。
"silent:true"にしていると実行中の表示がされませんが、これをfalseにすると実行経過が確認できます。
使ってみるとなかなか便利です。今後はDockerコンテナでLabVIEWアプリのビルドする機会があるかもしれないので、その時には役に立つかも。
Window版Taskfile使用時の注意
TaskfileはWindows版もありますので、Windows環境でも使えます。ですが、taskfile.yamlはutf8で記述しますのでファイルパスの指定もutf8になります。このため、Windows環境でビルド対象のパスに日本語があると文字コードが合わないためエラーになります。
フォルダ名やファイル名にすべて英語になっていれば(日本語文字がなければ)使えるはずです。
ちなみに「MGI Solution Explorer」は日本語がパスに含まれていてもビルドできた。