うちのカレーにはこれが入ってる!って食材ありますか?

C++の入門書を読んでプロコンの勉強をし始めた程度のプログラミング能力の者です.

最近vimを使い始め,
http://d.hatena.ne.jp/osyo-manga/20110530/130671 …
http://d.hatena.ne.jp/osyo-manga/20110302/129908 …
ここを見ながらこれまで使っていたVisualStudio2012のコンパイラをvimのプラグインSingleCompileに対応させました.
現バージョンではvs2012に非対応だったため,
設定ファイルに存在するvs2010のテンプレートをコピペ,適宜修正し対応させました.

:SCCompile としてみると,

:!cl -o test C:\ ... \test.c >C:\Users\ユーザー名\AppData\Local\Temp\VIeBC16.tmp 2>&1

と表示され,一応コンパイルには成功するのですが,
:cope で見てみると

|| Microsoft(R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x86
|| Copyright (C) Microsoft Corporation. All rights reserved.
||
|| cl : コマンド ライン warning D9035 : オプション 'o' の使用は現在推奨されていません。今後のバージョンからは削除されます。
|| test.c
|| Microsoft (R) Incremental Linker Version 11.00.50727.1
|| Copyright (C) Microsoft Corporation. All rights reserved.
||
|| /out:test.exe
|| /out:test.exe
|| test.obj

と表示されます.
今までVisualStudio2012ではリンクやコンパイルの流れがどのようなものなのかわからずに使っていたので,
「cl : コマンド ライン warning D9035 : オプション 'o' の使用は現在推奨されていません。今後のバージョンからは削除されます。」
の意味が意味が理解できません.
解決策を教えてください.

A 回答 (1件)

それ自体は使ったことないですが。



参考にしたのは、gcc,cc,clangといったコンパイラ用のものでは無いでしょうか?
これらのコンパイラでは-oオプションで出力ファイルを指定します
例)
http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Over …

clでは、-oオプションは無く、 /Feファイル名で出力ファイルを指定します
http://msdn.microsoft.com/ja-jp/library/kc584260 …

おそらく、/O という最適化オプションだと解釈されていると思われます。
/O1等と後ろにもう一文字加えたものが本来の使い方です。
過去のCLとの互換のために、無指定のを残しているけど、将来は使えなくするよ、という警告だと思われます。



注意点として、 -o は、どの出力形式にたいしても有効なのに対して、/Feは実行ファイルのみで、オブジェクトファイル等では別のオプションが必要です。


他にも、gcc等とclでは挙動がいろいろと違います。
例) test.cを出力無指定でコンパイルした場合
gcc等→ a.out または a.exe に出力
cl → test.exe に出力

VS2012が未対応、とのことですが、clコマンドの使い方自体はほとんど変っていないと思います。
参考にするなら、VS2010用の設定の方がよいのでは
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報