2017-03-19 4 views
2

完全なデバッグのコンパイルには、あまりにも多くのメモリが必要です。私のマシンはわずか4GBのメモリです。私は、デバッグコンパイラ、リリースコンパイルと他のモジュールを使用してモジュールをデバッグしたいと思います。一般的にLLVMのいくつかのモジュールをデバッグモードでコンパイルするには、他のモードはリリースモードでコンパイルしますか?

、私は、次のコマンドを使用してデバッグモードまたはリリースモードでLLVMを構築:

cmake /home/llvm380 -DCMAKE_BUILD_TYPE="Release" 

cmake /home/llvm380 -DCMAKE_BUILD_TYPE="Debug" 

ビルドタイプの選択は、全体のビルドプロセスに影響を与えます。完全なデバッグビルドは、約13GBのメモリが必要であるため、デバッグするのに便利ではありません。私はコードの小さな部分をデバッグしたいだけです。

例:llvm/lib/IRモジュールデバッグビルドを作成します。 llvm\lib\IRCMakeLists.txtを変更するにはどうすればよいですか?

+0

疑い。 – arrowd

+0

LLVMのCMakeListsファイルをハックしなければ、おそらく不可能です。しかし、あなたがそれらをハックする準備ができているなら、間違いなく可能です。 –

+1

この質問が保留になっている理由はわかりません。質問は絶対的に明確かつ有効なので、有権者が文脈から完全に外れているように見えます。 – AlexDenisov

答えて

2

LLVMはCMakeとともに動作するため、特定のモジュールでデバッグモードを有効にするには、特定のファイルに対して-gフラグを有効にするか、ビルドターゲット全体で有効にする必要があります。ほとんどの場合、

またはCOMPILE_DEFITIONSターゲットプロパティ(Difference between COMPILE_FLAGS and COMPILE_OPTIONS参照)またはCOMPILE_FLAGSソースファイルプロパティが必要です。

私はこれをファイルレベルとターゲットレベルの両方で1つのプロジェクトですばやく試して、実行可能であることを確認できます。

1つのファイルMySourceFile.cppとビルドターゲットMyTargetがあるとします。 。

get_target_property(my_target_compile_flags MyTarget COMPILE_FLAGS) 
if (NOT my_target_compile_flags) 
    set(my_target_compile_flags "") 
endif() 
set_target_properties(MyTarget 
         PROPERTIES COMPILE_OPTIONS 
         "${my_target_compile_options} -g -hack-target") 

ソースファイルレベルで-gフラグを追加する:私は、これは、その結果どこの見え方が-hack-target-hack-fileを追加してい下回っ

set(my_source_files 
    MySourceFile.cpp 
) 

add_library(MyTarget SHARED ${my_source_files} ...) 

目標レベルに-gフラグを追加する

get_source_file_property(my_source_file_compile_flags 
         MySource.cpp 
         COMPILE_FLAGS) 

if (NOT my_source_file_compile_flags) 
    set(my_source_file_compile_flags "") 
endif() 
set_source_files_properties(MySource.cpp 
          PROPERTIES 
          COMPILE_FLAGS 
          "${my_source_file_compile_flags} -g -hack-file") 

上記の行から、あなたの便宜のためにCMakeヘルパー関数を作成することができます。-g必要なものにフラグを付けます私。

私は、これは忍者とXcode上でどのように機能するかを話すことができる

忍者

$ grep -ri "hack-" BuildNinja 

BuildNinja//build.ninja: FLAGS = -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -fPIC -g -hack-target -std=c++11 -g -hack-file 

Xcodeの

目標レベルのXcodeの-gで」に行きますデバッグシンボルを生成する "プロパティ:

Xcode target with -g flag enabled in Release Xcode target without -g flag enabled in Release

これはフラグがどのように見えるかです:

目標1:enter image description here

ファイル1:これは非常にハッキングなしで可能であるenter image description here

+0

こんにちは、Stanislav Pankevich、助けてよろしくお願いします。 – freyone

+0

あなたの提案によると、私のモジュールのCmakelists.txtが変更されました。その後、どのようにcmakeに?まだ "cmake/home/llvm380 -DCMAKE_BUILD_TYPE ="リリース "" -g "を追加する必要がありますか? – freyone

+0

いいえ、私が示したようにCMakeListsに '-g'を追加するだけです。他のどこにも渡す必要はありません。 –

関連する問題