2016-09-08 7 views
0

Hereデバッグまたはリリースプロジェクトのビルドを取得するときに、cmakeに引数としてCMAKE_BUILD_TYPEを渡すことをお勧めします。私はlibharuをcmakeでコンパイルしようとしています。デバッグシンボルでコンパイルしたいと思います。デバッグシンボルまたはcmakeを使用してプロジェクトをコンパイルする適切な方法

CMAKE_BUILD_TYPE 
CMAKE_C_FLAGS_RELEASE 
CMAKE_C_FLAGS_DEBUG 

が、私は何も見つからなかっました:私はCMakeLists.txtには、以下の文字列のlibharuに含まれて検索しました。私の質問は、libharuのCMakeLists.txtにそれが言及されていないときにCMAKE_BUILD_TYPEと指定するのが意味があるのであれば?そうでない場合、デバッグシンボルを使用してlibharuをコンパイルするにはどうすればよいですか?

PS:私は、cmakeを使用してVisual Studio 2013用に生成されたプロジェクトでDebug/Win32が設定されていることに気付きましたが、これで十分ですか? CMakeLists.txtにこの情報がどこに指定されていますか?

PPS:この質問は特定のプロジェクトに大きく依存していると思いますが、一般的にこれを行うにはいくつかの方法がありますか?つまり、CMAKE_BUILD_TYPE=Debugは常にDebugビルドを作成するのですか、それとも私が知っておくべきことがありますか? CMAKE_BUILD_TYPE経由で構成タイプを設定

おかげ

+0

私はCMAKE_BUILD_TYPEを変更することは、cmakeに直接渡す以外の方法は避けるべきだと言います。しかし、このライブラリでは、CMAKE_BUILD_TYPEをDebugに設定するとどうなりましたか?デバッグシンボルでコンパイルしましたか? http://stackoverflow.com/questions/1999654/how-can-i-tell-if-a-library-was-compiled-with-g –

+0

@RobertPrévostはそれが既にコンパイルされているようですが、少なくともpdbファイルは作成した。現在のビルドがデバッグシンボルで作成されているかどうかを確認する方法はありますか? –

+0

ライブラリが構築されたか確認するには、いくつかの異なる方法があるようです(例えば、それは/ MTまたは/ MTDコンパイルされた場合)、SOそれについての多くの質問を。 pdbファイルは確かにデバッグに役立ちます。 Microsoftから: "シンボルファイルとも呼ばれるプログラムデータベース(.pdb)ファイルは、作成した識別子をクラス、メソッド、およびその他のコードのソースファイルに、プロジェクトのコンパイル済み実行可能ファイルで使用される識別子にマップします。 "答えのための –

答えて

2

は通常は、設定の意味を反映したものに、コンパイラの追加オプション、セットスイッチ。それはcmake

-DCMAKE_BUILD_TYPE=Debug 

はCMakeLists.txtはその行動を変更しない限り、情報をデバッグ生成するようにコンパイラーに指示渡し、です。

構成依存コンパイラオプションは、変数CMAKE_<LANG>_FLAGS_<CONFIG>に含まれています。たとえば、変数CMAKE_C_FLAGS_DEBUGには、「デバッグ」構成のCコンパイラの追加オプションが含まれています。これらの変数はCMakeによって自動的に満たされ、CMakeLists.txt自体はまれにそれらを変更します。あなたはCMakeLists.txtは、変数CMAKE_BUILD_TYPECMAKE_<LANG>_FLAGS_<CONFIG>を果たしていないことが判明した場合

だから、その後、それは、構成タイプに関する一般的な規則に従います。


このCMakeLists.txtは、その変数をを果たしてはならないことをを意味するものではありません。

多くの場合、CMakeLists.txtは、変数がユーザによって設定されておらず、単一設定ジェネレータが使用されている場合、デフォルト値に設定します。 CMakeLists.txtも、コンパイラのデフォルト設定がプロジェクトに適していない場合、変数CMAKE_<LANG>_FLAGS_<CONFIG>の一部を設定することがあります。

でも、CMakeLists.txtがこれらの変数に接触しなくても機能します。

+0

タンクます。私が正しいと理解していれば、 'CMakeLists.txt'は' CMAKE_BUILD_TYPE'と 'CMAKE_ _FLAGS_ 'を混乱させ、 '-D'でこれらの変数を渡すべきでしょうか? –

+0

'うまく書かれたCMakeLists.txtはCMAKE_BUILD_TYPEとCMAKE_と混乱すべきではありません。 _FLAGS_ ' - それほど真実ではありません。 'CMakeLists.txt'がそれらに触れていない、彼らが期待した方法で動作する場合、私はそのイベントを意味します。更新された回答をご覧ください。 – Tsyvarev

関連する問題