コーヒー飲みながら仕事したい

仕事で使う技術的なことの備忘録とか

mosquitto を Visual Studio でコンパイルする

githubに公開されている mosquitto のソースファイルを、Visual Studioコンパイルします。

前提

CMake を使用してソリューションファイルを生成

ここでは、CMake のインストール方法については言及しません。

mosquitto のソースファイルの用意

mosquitto のリポジトリgithub からクローンします。

CMake のビルド環境を用意

必要ファイルのダウンロード

Readmeに書いてある通り、以下をそれぞれ用意する必要があります。

環境変数の設定

ここで、ビルドを通すために、以下の通り環境変数を設定する必要があります。

  • OpenSSL
    • OPENSSL_ROOT_DIR という環境変数名で、OpenSSLの の展開フォルダを設定(例: c:\temp\OpenSSL-Win32\

CMake のビルドを実行

CMake を起動し、以下を指定し、 Configure ボタンを押す。

  • Where is the source code: に、 mosquitto の CMakeList.txt の存在するパス
  • Where to build the binaries: に、ソリューションを出力するフォルダパス

コンパイラに何を使うか聞かれるので、今回は Visual Studio 2010 を選択しました。

f:id:tassi-yuzukko:20180308164842p:plain

Finish ボタンを押すと、自動でコンパイルが走ります。

が、たぶん、 c-ares library not found とか言って怒られるので、画面上の WITH_SRVチェックボックスを外し、再度 Generate すします。

f:id:tassi-yuzukko:20180308164018p:plain

正常に終了したら、CMake のコンソール上に Generating done と表示されます。

すると、指定したフォルダに、 Visual Studio のソリューションファイルが出力されています。

参考

github.com

Visual Studio で mosquitto をビルドする

生成されたソリューションファイル(mosquitto.sln)を起動します。

そのままビルドしてもエラーになるので、以下のようにライブラリの設定をします。

OpenSSL の環境変数

system の Path 環境変数に、OpenSSLの の展開フォルダ\bin を設定します。(例: c:\temp\OpenSSL-Win32\bin\

pthreads の設定

pthreads を展開したフォルダから、以下のものをコピーしていきます。

ヘッダファイル

  • pthread.h
  • sched.h
  • semaphore.h

上記ファイルを、C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include へコピー

lib ファイル

  • pthreadVC2.lib
  • pthreadVCE2.lib
  • pthreadVSE2.lib

上記ファイルを、 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib へコピー

dll ファイル

  • pthreadGC2.dll
  • pthreadGCE2.dll
  • pthreadVC2.dll
  • pthreadVCE2.dll *pthreadVSE2.dll

上記ファイルを、 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin へコピー

参考

全ては時の中に… : 【VC++】スレッド(pThread)を利用する環境を整える

ビルド実行

上記でたぶん、ビルドできるはずです。

とりあえず mosquitto_sub をコンパイルしてみましたが、警告が出まくりますが、なんとか mosquitto_sub.exe が出力されました・・・