2017-11-03 18 views
2

これに関する多くの情報はありません。 clangにこの警告を指定させる原因は何ですか?clang:警告:コンパイル時に引数が使用されません: '-stdlib = libC++'

私はcmakeスクリプトを実行するdevマシンを持っており、すべて正常に動作します。非常に同じcmakeファイルが上記のメッセージが常に出力されているビルドサーバー上で実行されています。

私の開発マシンがclang4を実行している間、ビルドサーバはclang3.8を実行しています。 この問題は単純な解決策では再現できません。 例えば、簡単なmain.cppには、このエラーが発生することはありません。

clang++ main.cpp -std=c++14 -stdlib=libc++ 
も、ビルドマシン上でうまく動作します

これはなぜ印刷されるのでしょうか?あなたは、これはccacheの、distccので警告を鎮めるために必要とされるLIBRARY_RELEASE_OPTIONS-Wno-error=unused-command-line-argumentを追加し、警告を黙らしたい場合など、

set(LIBRARY_RELEASE_OPTIONS "-Wall;-Wextra;-pedantic;-Wlong-long;-Wmissing-braces;-Wunused-function;-Wuninitialized;-Wunused-label;-Wunused-parameter;-Wdisabled-optimization;-O2;-std=c++14;") 
add_library(${SHARED_LIBRARY_NAME} STATIC ${SERVER_SOURCE})            
target_compile_options(${SHARED_LIBRARY_NAME} PUBLIC "$<$<CONFIG:RELEASE>:${LIBRARY_RELEASE_OPTIONS}>") 
+0

'-nostdinC++'でビルドしますか? – Jarod42

+0

@ Jarod42いいえ、私もそれを指定すべきですか? – Crippin

+2

'-stdlib = libC++ 'を使用しないようにするオプションがあります。 '-nostdinC++'はそのオプションの1つです。 – Jarod42

答えて

1

また

これはフラグがIMを使用しています-std=c++14;LIBRARY_RELEASE_OPTIONS

+0

これは問題を解決するか、この提案はベストプラクティスのヒントですか? – Crippin

+0

これは、CMakeが単にリストを消費してそれを渡すのではなく、何がベストかを決定します。 –

+0

@Crippinはあなたに適した何かで私の答えを更新しました。 –

1

この問題はccacheに関連しているようです。 ccache 3.3.3は期待通りに動作しますが、ubuntu 16 LTSでは3.2.4がこの警告を引き起こすようです。

+0

興味深い、それは既知のバグですか?私は3.3.4を使用しています –

+0

知られているが固定されていないようです:https://github.com/ccache/ccache/issues/189 –

関連する問題