macで作ったC++プログラムをwindowsのvisual studioでビルドする際に色々手間取ったので備忘録
visual studioでCMakeを通してビルドする方法
- cmakeをダウンロード(https://cmake.org/download/ のBinary distributionsのWindows win64-x64 Installerを選択)
- cmakeのpathを通しておく。(インストール途中で通しておくか聞かれるチェックボックスがあるのでそれにチェックするか、自分でC:\Program Files\CMake\binにpathを通す)
- visual studio(visual studio community 2017)をダウンロードする。
- インストール作業の途中で何の開発環境を入れるか選択する画面が出てくるので「C++によるデスクトップ開発」を選択。
- インストールが終わったら同時にインストールされているはずの「開発者コマンドプロンプト for VS.2017」を開く。
- ビルドしたいプロジェクトのCMakeLists.txtのあるディレクトリに移動
- 「mkdir build」をしてCMakeLists.txtと並列に新しいディレクトリ作成(ディレクトリ名はbuildじゃなくてもいいけどここではbuildにしておく)
- 「cd build」で作った新しいディレクトリに移動
- 「cmake ..」でcmake
- buildファイルの中に「.sln」拡張子のものがあると思うのでそれをダブルクリックするとvisual studioで開ける
ビルドしたときに出てくる各エラーの対処
「定数が2行目に続いています」や「構文エラー'in'」「プリプロセッサ ディレクティブのシャープ記号 (#) の前に、空白文字以外の文字があります。」など
- 原因 : macとwindows(visual studio?)の文字コードの違い
- 対処方法
- エラーをダブルクリックでエラーの出ているファイルを開く
- 画面上のタブの「ファイル」→「名前を付けて〇〇(ファイル名)を保存」→「上書き保存」ボタンの右にある▼を押して「エンコード付きで保存」を選択(既に存在するが上書き保存しますか?的なことを聞かれるのでOKを押す)
- デフォルトでエンコードが【日本語(シフトJIS)】になっていた場合→エンコードは変えず、「行の終わり」を「Unix(LF)」に変更。その他の場合→「エンコード」を「Unicode(UTF-8 シグネチャつき)」に、「行の終わり」を「Unicode 行区切り記号(LS)」に変更
sys/time.hが無いといわれる
- 対処方法
- sys/time.h →time.hに書き換え
arpa/inet.hが無いといわれる
- 対処方法
- arpa/inet.h →winsock2.hに書き換え
fftw3.hが無いといわれる
boost/〇〇が無いといわれる
- 対処方法
- 画面右のプロジェクトが並んでいるところで、対象のプロジェクトの上で右クリック→「NuGetパッケージの管理」→boostを検索して取得