トップ回答者
VC++でコマンドラインからのコンパイルについて

質問
-
VC++ 2010では、適当なテキストエディタからソースコードを入力し、コマンドプロンプトからコンパイルやリンクなどが行うことも可能ですよね。ですが、それでコンパイルするとexeファイルサイズが非常に大きくなってしまいます。
hello worldをコンソールに出力するだけのプログラムでも、40KB以上もあります。VC++のIDEでreleaseモードでコンパイルすると、この1/10ぐらいだったかな? そのぐらいの小さなサイズのものが出力されます。
MSDNのコマンドラインオプションを見て、cl.exeには/Ox /GL、link.exeには/OPT:REF /OPT:ICFなどサイズが小さくなりそうなオプションを追加してコンパイルしても、サイズは小さくなりません。。。動作は変わらないので、不要なデバッグ情報や必要のないlibなどが原因かなとは思っているのですが・・・
どうやったらコマンドラインから、IDEでコンパイルした時のような小さなexeファイルを作成することが出来ますか?
回答
-
コマンドラインオプションの規定では、最適化が行われません。コードによっては、最適化すると劇的に小さくなる場合があります。
他に大きく影響しそうなところではランタイムのリンクがどうなっているか?ですかね。/MD をつけたら変わるかもしれません。
そのほかにも、IDEでビルドするときには多数のオプションをつけています。プロパティで、詳細のところを見るとわかりますが、本当にいろいろついてますよ。そのあたりの違い(デフォルトがどれなのかを含む)で、状況が変わっているのだと思います。
わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
- 回答としてマーク 名無しのなっしー 2012年8月11日 9:06
すべての返信
-
コマンドラインオプションの規定では、最適化が行われません。コードによっては、最適化すると劇的に小さくなる場合があります。
他に大きく影響しそうなところではランタイムのリンクがどうなっているか?ですかね。/MD をつけたら変わるかもしれません。
そのほかにも、IDEでビルドするときには多数のオプションをつけています。プロパティで、詳細のところを見るとわかりますが、本当にいろいろついてますよ。そのあたりの違い(デフォルトがどれなのかを含む)で、状況が変わっているのだと思います。
わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
- 回答としてマーク 名無しのなっしー 2012年8月11日 9:06