Posted at

nimbleでパッケージ管理

More than 1 year has passed since last update.


概要


  • nimbleでパッケージを作成するときのメモ

  • nimbleで作成したパッケージで色々する


環境


  • OSX

  • nim 0.17.2

  • nimble 0.8.8


外部のパッケージを操作する


パッケージリストを取得する

% nimble update


  • ~/.nimble 以下にパッケージリストが配置される


パッケージを検索

% nimble search [キーワード]


  • キーワードで関連するパッケージ一覧を表示


パッケージをインストール

% nimble install [パッケージ名]


  • ~/.nimble/pkgs 以下にパッケージが配置される


パッケージをアンインストール

% nimble uninstall [パッケージ名]


  • ~/.nimble/pkgs 以下の対応するパッケージを削除


自作のパッケージを作成する


パッケージ作成

% mkdir example.nim

% cd example.nim
% nimble init
Info: In order to initialise a new Nimble package, I will need to ask you
... some questions. Default values are shown in square brackets, press
... enter to use them.
Prompt: Package name? [examplenim]
Answer: example
Prompt: Initial version of package? [0.1.0]
Answer:
Prompt: Your name? [honeytrap15]
Answer:
Prompt: Package description?
Answer: example nimble package
Prompt: Package license? [MIT]
Answer:
Prompt: Lowest supported Nim version? [0.17.2]
Answer:
Success: Nimble file created successfully


  • ベースとなるnimbleファイルが生成される


ビルド設定


  • nimble buildでプロジェクトをビルドできる


  • 以下のような構成にした


% tree      

.
├── example.nimble
└── src
└── example.nim


example.nim

echo "example package"



  • ソースディレクトリと生成するバイナリをnimbleファイルに設定する


example.nimble

# Package

version = "0.1.0"
author = "honeytrap15"
description = "example nimble package"
license = "MIT"

bin = @["example"]
srcDir = "src"

# Dependencies

requires "nim >= 0.17.2"



  • ビルド

% nimble build

Verifying dependencies for example@0.1.0
Building example/example using c backend
% ls
example example.nimble src
% ./example
example package


タスクを追加


  • nimbleファイルに定義することでサブコマンドを追加できる


example.nimble

...

task clean, "clean build files":
exec "rm -rf example"
exec "rm -rf src/nimcache"
echo "remove build files"


ローカルのパッケージをインストール


  • ローカルにあるパッケージのリンクする

% nimble develop

Warning: This package's binaries will not be compiled nor symlinked for development.
Verifying dependencies for example@#head
Success: example linked successfully to '/Users/hiro/Desktop/example.nim'.
% ls ~/.nimble/pkgs
example-#head


  • これをやっておくとテストコードを書いたり、他のパッケージからimportすることができるようになる