libsassをWindows用にコンパイル
WindowsでSASSを使いたいなと思う事があったのですが、Rubyを導入するのは大変だったのでlibsassを使う事にしました。
というわけで、libsassをWindows用にコンパイルする方法
スポンサーリンク
Windowsでlibsass
libsassに関する説明は要らないですよね?まぁ雑に言うとSASSのC++実装です。Ruby版より早い。
で、そのlibsassですが、Windows向けバージョンがなかったり、あっても古かったり、DLLが必要だったり。
なので「最新版libsassのdll不要版を作成する」のがこの記事の趣旨
(ちなみにその辺りがどうでも良い人はGitHubのreleaseから使えそうなmsiをダウンロードしてインストールしましょう)
必要な物
VisualStudioが必要です。インストールしていない人はこの辺りでも見ながら適当にインストールしましょう。
それから、ソースコードの取得にGitを使うのでインストールしていない人はGit for Windowsを入れておく。
libsassとsassc
libsassというのはライブラリだけです、sasscはそれをCLIから使えるようにするラッパーみたいなの
libsassだけで良い(プログラムに組み込む)ならlibsassだけをコンパイルして終わりなのですが、今回はCLIから使うのが目的なのでsasscもコンパイルします。
コンパイル
ちなみに今回使ったのはVisualStudio 2017 Communityです。
本来はMSBuildを直接コマンドから呼び出してコンパイルするみたいなのですが、めんどくさいのでVisualStudioからやります。
ソースの取得
libsassディレクトリの中にsasscディレクトリが作成されるように配置する必要があります。
git clone https://github.com/sass/libsass
cd libsass
# 3.5.4の部分は使いたいバージョン
git checkout -b build refs/tags/3.5.4
# libsassの中にsasscディレクトリを作成して移動
git clone https://github.com/sass/sassc
cd sassc
# 3.5.0の部分は使いたいバージョン
git checkout -b build refs/tags/3.5.0
その後、libsass/sassc/winの中にあるsassc.slnをVisualStudioで開きます。
「プロジェクトの再ターゲット」とか出てきた場合はそれに従ってSDKバージョンを更新。
バージョンの修正
このままコンパイルしても良いのですが、このままだとバージョンのsasscとlibsassが「N/A」になって不便なのでバージョンを修正しておこうと思います。
2つのファイルに定数でバージョンが定義されているので、それを書き換えます。
// libsass/include/sass/version.h
//#define LIBSASS_VERSION "[NA]"
#define LIBSASS_VERSION "3.5.4"
// libsass/sassc/sassc_version.h
//#define SASSC_VERSION "[NA]"
#define SASSC_VERSION "3.5.0"
バージョン番号は使用したバージョンに合わせて変更を。
コンパイル
後はVisualStudio上からコンパイル(ビルド)するだけ、ちなみに「Release」でも「Release without static runtime」でもdll不要版が生産される。
何が違うのかというと、ランタイムが「マルチスレッド」か「マルチスレッドDLL」か。マルチスレッドは実行にVC++の再頒布可能パッケージのインストールが不要、マルチスレッドDLLの方がファイルサイズが小さい。(良く分からないなら「Release」を選んでおけばいい、こちらがマルチスレッド版)
必要なら最適化オプションを弄ってもいいかもしれない。
ビルドが完了すると「libsass/sassc/bin」にsassc.exeが生産される、これでSASSのコンパイルが出来る。