C++をWindows コマンドプロンプトでコンパイル

普段自宅ではMACBOOKで作業をしていますが、出張ででかけているときはWindowsを使っています。AOJでC++の問題を解くのに、Visual StudioのIDEをひらいてやってたこともあるのですが、プロジェクトを作って大掛かりになってしまうので、簡単にコマンドプロンプト(cmd)でやる方法をまとめます。

まず、コマンドプロンプトでコンパイルする場合はcl.exeを使います。これを直接実行すると、インクルードパスが設定されていません。と表示され実行っできません。

>cl main.cpp

Microsoft(R) C/C++ Optimizing Compiler Version 19.16.27030.1 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.
main.cpp
main.cpp(2): fatal error C1034: iostream: インクルード パスが設定されていません。

通常はスタートメニューから、「開発者コマンド プロンプト for VS 2017」を起動し実行します。 しかし、ディレクトリーに移動するのが非常に面倒です。

「開発者コマンド プロンプト for VS 2017」をプロパティで確認すると、

%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat"

コマンドプロンプトでフォルダを指定して開く簡単な方法は、エクスプローラのアドレスバーにcmdと入力することです。そこで、上記で確認したコマンドを入力すると、コマンドプロンプトがコンパイル実行可能状態になります。

C:\Users\username\Documents\C\projects\helloworld>%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat"
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.11
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************

cl.exeでは/EHscオプションをつけて実行します。

C:\Users\username\Documents\C\projects\helloworld>cl /EHsc main.cpp
Microsoft(R) C/C++ Optimizing Compiler Version 19.16.27030.1 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.
main.cpp
Microsoft (R) Incremental Linker Version 14.16.27030.1
Copyright (C) Microsoft Corporation.  All rights reserved.
/out:main.exe
main.obj

プログラム実行は、exeファイルを入力するだけ。今回はmain.exeができあがったので下記のようになります。

C:\Users\username\Documents\C\projects\helloworld>main.exe
Hello C++ World

Visual studio codeでターミナルでやるだけなら上記のやりかたで問題ありません。もしTaskで実行する場合は、実行毎に新規ターミナルが起動するのでできません。その場合は、Visual studio codeを一度閉じて、コマンドプロンプトで%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat"を実行してからcode .と入力すると、Taskも実行できるようになります。フォルダも選択した状態で起動するので非常に便利です。

Wake On Lanについていろいろ試してみた

テレビをリモートで操作する方法を調べていたら、Wake On Lanにかかれているサイトに出会った。恥ずかしながら今までWake On Lanという言葉を知らなかった。文字通りLan 経由で起動するということだが、マジックパケットと呼ばれる方式で通信をすると、電源がOFFが状態から起動するということらしい。

まずはXYCベアボーンで試そうと思った。WindowsデバイスマネージャーのLANカードオプションからWake On Lanを設定。これは問題なかった。次にBIOSの設定しようとしたら項目が出て来なかった。おそらくマザーボードがWake On Lanに対応していないということだろう。それでも、スリープ状態から起動することができた。

起動する側で試したのはRaspberry piでetherwakeというソフト。次にMacbookでwakeonlanというソフト使い方は次の通り

Raspberry pi
$ sudo aptinstall etherwake
$ sudo etherwake 01:02:03:04:05:06

Mac
$ brew install wakeonlan
$ wakeonlan -i 192.168.1.255 -p 9 01:02:03:04:05:06

Wake On Lanをきっかけはテレビだが、そのサイトもうちと同じソニーのブラビアなので一応試してみた。家のほうがずっと古いがダメ元で、一応Lanポートもついているし。

試してみるとうんともすんとも言わなかった。インターネットで調べると。Wake On Lanには対応していませんと明記されていた。

このまま、試すことが出来ないで終わってしまうのか。と思っていたところ、会社で使っているDell 製のDesktopパソコンで試すことにした。このPCはやり方の手順がのった例までのっているサイトがあったのでできることは間違えなし。Windowsの設定とBiosの設定をやったらできるようになった。

今回わかった事はWake On Lanができる状態では、電源を切った状態でもLan接続している部分のランプが点滅すること。でなきゃ、パソコンの電源を落とした状態で、マジックパケットを受け取ることができるわけがないから。

そもそもWake On Lanがどんな動きをするかわからなかったので、正解までたどり着けてよかった。

参考にしたサイト

Raspberry Piで自宅内のWindows機を起動させる (Wake-on-LAN)
Wake Other Computers from Mac OSX
Windows10でWOL(Wake on LAN)の設定を行う
最近のDELL OptiplexでWOL(Wake on LAN)をするには?

翻訳した後、コメントファイルへインポートが難しかった

Googleスプレッドシートで翻訳するところまでは簡単だったが、翻訳したデータをGX Works2コメントファイルへインポートするところで苦労した。文字数を少なくするために、スペースを無くし単語の先頭は大文字に変換し、セミコロンやタブを入れた。

Notepad++を使用し、以下のような手順で処理した。

  1. CSVファイルをNotepad++で開く
  2. Ctrl+A Alt+Shift+U 全て選択
  3. 編集 →大文字/小文字変換→語頭は大文字、他は小文字(Proper Case)
  4. 半角スペースを空文字に置換。
  5. 先頭文字にセミコロンをつける。
  6. カンマを”\t”(セミコロン タブ セミコロン)に置換
  7. エンコード → UCS LE BOMへ変換
  8. 編集 → 改行コード変換 →Unix(LF)
  9. 名前を付けてCSVファイルに保存する。

CSVファイルについては取説を見ると以下のように定義されている。


下記に,CSV ファイルの詳細な形式について示します。
• ファイル形式はUnicode(UTF-16 Little Endian BOM あり)です。
• 項目間の区切りはタブ( \t) です。
• 各項目はダブルクォーテーション(“) で囲みます。
• 項目内にダブルクォーテーション(“) を含む場合,項目内のダブルクォーテーション(“) はダブル
クォーテーション2個(“”) で表します。
• 行の最後は改行を設定します。
改行コードはCR+LF です。
• 空白は通常文字として扱います

 

Adobe Acrobat Reader DC のものさし機能が便利

仕事では電気設計の仕事をしていて、設備のハード図を書いて、モータケーブルの長さを決めて手配することもしている。装置内のケーブルの長さはメカ設計に相談し、メカ設計がCADでケーブルをはわす経路の長さを測って教えてもらうのだが、メカ設計が忙しいときはなかなか聞きにくい。PDFベースの図面はもらっていてこれで何かできないかと探していたら、なんとPDFを見るのに使っているAdobe Acrobat Reader DCにものさしがあることが分かった。

使い方は簡単。ツールタブからものさしをクリックするとツールバーが表示されるのでものさしを選択するだけ。寸法線のところで計ってみると長さが全然違って表示された。縮尺が全然合ってないようだ。

そんな時は縮尺を合わせることもできる。測定タイプのツールバー以外のところで右クリックし、「測定比率と精度を変更」をクリックする。寸法測定中でも、右クリックをすれば3段目に表示される。ものさしツールを選択してないと表示しないので注意していただきたい。

右クリックメニューに「測定比率と精度の変更」がある

測定比率は電卓を使って計算する。図面上の表示寸法が300mmで、ものさしでの測定寸法が59.99mmなので単純に割り算をすればよい。300 ÷ 59.99 ≒ 5 。なので5と言う数値を入力する。入力欄がグレー色になっているので分かりにくいが入力することができる。計算結果が小数点の場合は小数点第5位まで入力できるので入力した方がよい。あまり小数点第1位ぐらいで四捨五入すると、正確な数値にならない。また、精度は1に設定。ここで細かく小数点まで表示してしまうと、切りのいい数字で表示されずに見ずらい。

測定比率と精度を変更ウィンドウ

実際に測定して確かめてみると正確に寸法が表示される。

測定結果

円も測定することが出来る。

ただ測るだけではなく、ファイルを保存すれば寸法線をそのまま保存することもできる。このやり方を見つけてからは、メカ設計の手を止めることもなくじっくりと測ることが出来るようになった。

XCYベアボーンキットにWindows10インストール(2)

Windows10を諦められない

DebianでやっていたがWindows10が諦められない。できないままで終わるのは嫌だ。それにWindowsのデスクトップアプリを試す環境がどうしても欲しい。前回は起動ディスクをUSBメモリーで作ったが、DVDにしてみてはどうか。イメージファイルをDVDに焼いてインストールすることにした。

イメージDVDを作成

MACでイメージファイルを焼くのはすごく簡単。外付けのDVDドライブを取り付けて、新しいDVD-Rをセットし、Finderでイメージファイルを右クリックして「ディスクイメージファイルを・・・.iso をディスクに書き込む」だけ。書き込みにかかる時間はUSBメモリーに作成するよりずっと早い。

XCYベアボーンへインストール

外付けDVDドライブを取り外し、そのままXCYベアボーンへ取り付け、F11を押しながら起動し、起動後、何かキーを押せばインストールが開始する。後はウィザードに従うだけ。思ったより簡単にできた。

Wi-Fiは問題なし

Debian 9で苦労したWi-Fiの設定はWindows10では全く苦労せずに設定できた。さすがWindowsだ。

画面が真っ暗に

しかし問題が起きた、一度シャットダウンして再び電源を入れたら、ログイン画面は表示するが、ログイン後に画面が真っ暗でマウスポインタだけ映るようになった。Ctrl+Shift+Delete メニューは問題なく表示する。調べてみるとグラフィックでエラーが出ているとのことだった。コントロールパネルのデバイス設定を見るとエラーになっていた。そのままドライバーを更新たところ解消した。次からはシャットダウンして立ち上げても全然問題なかった。

Macからリモートディスクトップ

Macからリモートデスクトップで接続して作業したかったので、Windows 以前使用したことがある、Remote Disktop Ver8で接続することを確認。しかし画像ファイルのコピペができないから使い勝手が悪いと思った。調べるとVer10では出来るらしい。早速ダウンロードして接続しようとしたが、ログインするところで接続できなかった。いろいろ調べて試してみた。結果的に言えば通常しているログインIDではなく、Windows ID でログインすることが出来た。 画像のコピペができることも確認した。

XCYベアボーンキットにWindows10インストール(1)

メモリカードからのOS起動

早速OSをインストールことにした。8GBメモリーだから64bitOSでないと意味が無い。Windowsデスクトップアプリを作って試す環境がほしかったのでWindows10 64bit版にした。Windows10はインターネットサイトからダウンロードした。

USBメモリーへ書き込み

macからの書き込みはターミナルでコマンドラインから実行した。

diskutil eraseDisk MS-DOS UNTITLED /dev/disk4
diskutil unmountDisk /dev/disk4
sudo dd if=/Users/username/Win10_1803_Japanese_x64.iso of=/dev/disk4 bs=1m
diskutil eject /dev/disk4

ddコマンドには1時間半ぐらいかかるので気長にやるしかない。途中進んでいるか不安になるが、ctrl+tで現在の容量を確認することができる。

XCYベアボーンキットから起動

電源ボタンを押したらF11キーを押しすと、外部から読み込みが始まる。しかしうんともすんとも言わない。Biosから読み込みドライブの順番を変えてもダメだった。

64bit版だからダメなのだと思い、USBメモリに32bit版を書いて実行したがダメだった。このインテルCPUは64bitだということは知っていたが、もしかしたらと思い試して見た。何度か試してもダメだったので、諦めて他のOSで試そうと思った。Linuxでまた使ったことのないDebian 64bit版にすることにした。早速Debianで試してみたら難なくインストールが開始した。せっかくだからこのままDebianをインストールして試すことにした。

この日はDebianに落ち着いたけれど、USBメモリに、OSを3回も書き込んだのでかなり時間がかかった。

XCYベアボーンキットを購入した

ふだんは家ではMacBookを使用していて、不自由な点はあまりないが、Windowsでもためしてみたくなることもある。Windows8からバージョンアップしたAcer製のネットブックがあるが、非力で動作がおそい。Macでも仮想ツールであるVMWareでWindow10を使っているが、これも遅いときがあるし、CPUを使うためかMacbookの冷却ファンが激しく回ってうるさいからだ。

まず自作にするか検討したが、欲しいものをいろいろ買っていると高く付きそうだし、置くスペースが限られているので小さくしたいのでやめた。いろいろ調べているとベアボーンキットなら小さいものもあることが分かった。

まずは有名なところでintel NUCだったが、少し高いし形がキューブがただったので我が家にはせっちしにくいので却下。 他のメーカのベアボーンキットをAmazonで探していると、XCYというメーカのベアボーンきっとがあることが分かった。

XCY Core i5 3317U ベアボーン ファン 熱伝導率良い VESA付け 小型 省スペース

サイズも小さめだし、アルミ製で少し高級感があるし、平べったいので我が設置しやすいところが気に入った。

だが、スペックに不明なところがある。例えばメモリやSSDは何をつければよいかわからなかった。

レビューにはまだ記載がなく不安だったが、XYCの他の機種のレビューではそこそこの評価で悪くなさそうだ。

海外の通販でもこの商品は表示されるが、同じくスペックはあまり詳しく載っていない。

そもそもXYCはどんな会社だと考えメーカのホームページに行くことにした。ホームページを探すだけでも苦労した。 Xinyunchuang Technologyという中国深センの会社らしい。

メーカホームページも見に行ったがもちゃんとした情報が載っていなかった。それどころか、買おうとしていた商品も見つけ出せない。

ますます不安になったがそこまで高いものではないし、SSDやメモリーのスペックは買ってからでもなんとかなるだろうと思い。思いっきって購入を決断した。

Amazonで注文したら到着予告が10日後になった。配送情報を確認すると2日後に発送されたが、更新されずまた不安になった。次に更新されたのは結局予定日の前日になってからだ。

9月5日に注文して9月21日に到着したので、注文時にAmazonに記載されている日打擲したことになる。日本では佐川急便が配送したようだ。

スペックはAmazonに記載されているのと若干違う。 ベアボーンキットなのに、SSDやメモリーが組み込まれ、Windows7がインストールされており、すぐに起動することが出来た。

到着してもSSDやメモリを買ってから出ないと確認が出来ないと思っていたので、これは嬉しいサプライズだ。

起動して確認してみてわかったことは、CPUは載っているスペックと違う。AmazonにはCore i5 3317Uと載っていたが、i5-3337Uだった。

記載されていなかったSSDは32GBで2.5インチタイプ、メモリーは4GBでSO-DIMM(DDR3L)、OSはWindows7 32bitがインストールされていた。

取説にはSSD、メモリー、Wi-Fiモジュールの設置方法が載っていてベアボーンキットらしい感じだ。 しかし、組み立てが必要だったのはWi-Fiのアンテナを取り付ける部分だけぐらいだった。

注文したときや配送時は不安であったが、届いたら悪くない感じだしベアボーンキットなのに起動し故障や不具合が無いか確認できることが良いことだと思った。この先SSDとメモリを交換しOSをインストールするときも、パソコン本体の不具合では無いということがわかるからだ。

さすがにSSDの容量が低すぎるため増量したい、せっかくだから64bitにしてメモリも増強したいと思った。

背面
付属品
マニュアル(表)
マニュアル(裏)