LoginSignup
6
0

More than 5 years have passed since last update.

1つのdubプロジェクトで複数の実行ファイルを作成する方法

Posted at

はじめに

アドベントカレンダー4日目cowsay -f dmanとネタが被り、力弱く7日目ヤター! cowsayで使えるd-man.cowデキタヨー!! を投稿しました。D言語くんに何かを喋らせたいという欲求は万人に共通ということですね。

$ cowsay -f ./d-man.cow May D-man bless you.
 ______________________
< May D-man bless you. >
 ----------------------
    \    _   _
     \  (_) (_)
       /______ \
       \ (O(O \/
        | | | |
        | |_| |
       /______/
         <   >
        (_) (_)

gophersay

$ go get github.com/adamryman/gophersay
$ gophersay
 ------------------------
 Concurrency is not parallelism
 ------------------------
   \
    \
     \   ,_---~~~~~----._
  _,,_,*^____      _____``*g*\"*,
 / __/ /'     ^.  /      \ ^@q   f
[  @f | @))    |  | @))   l  0 _/
 \`/   \~____ / __ \_____/    \
  |           _l__l_           I
  }          [______]           I
  ]            | | |            |
  ]             ~ ~             |
  |                            |
   |                           |

.
..
...
@simd_nyanは激怒した。必ず、かのクソネズミを滅せねばならぬと決意した。@simd_nyanにはGo言語がわからぬ。@simd_nyanは、日本のサラリーマンである。会議資料を書き、新橋で遊んで暮して来た。けれどもマスコットに対しては、人一倍に敏感であった。

d-man{say,think}

というわけで、d-man{say,think}コマンドを作りました。
1つのdubプロジェクトでd-man{say,think}、2つの実行ファイルを作成するために以下の方法を採用しました。

dub の configurations

"configurations"以下に作成した"versions"にソース内で認識させるversion名を入れます。
詳しくはConfigurations節を参照して下さい。

{
  "name": "d-mansay",
  "configurations": [
    {
      "name": "say",
      "targetName": "d-mansay",
      "targetType": "executable",
      "versions": ["say"]
    },
    {
      "name": "think",
      "targetName": "d-manthink",
      "targetType": "executable",
      "versions": ["think"]
    },
  ]
}

以下でビルドします。

# say が適用される
$ dub build
Performing "debug" build using dmd for x86_64.
d-mansay ~master: building configuration "say"...
Linking...
# say が適用される
$ dub build --config=say
Performing "debug" build using dmd for x86_64.
d-mansay ~master: building configuration "say"...
Linking...
# think が適用される
$ dub build --config=think
Performing "debug" build using dmd for x86_64.
d-mansay ~master: building configuration "think"...
Linking...

おわりに

$ d-manthink --help
 _________________________________________________________________________
( d-man{say,think} version 0.0.1, (c) 2016 @simd_nyan                     )
( Usage: d-man{say,think} [-bdgpstwy] [-h] [-n] [-W wrapcolumn] [message] )
 -------------------------------------------------------------------------
    o    _   _
     o  (_) (_)
       /______ \
       \ (O(O \/
        | | | |
        | |_| |
       /______/
         <   >
        (_) (_)
$ d-mansay May D-man be with you.
 ________________________
< May D-man be with you. >
 ------------------------
    \    _   _
     \  (_) (_)
       /______ \
       \ (O(O \/
        | | | |
        | |_| |
       /______/
         <   >
        (_) (_)
6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0