2017-03-01 122 views
0

CMakeを使用して構成および生成する既存のプロジェクトに取り組んでいます。 ターゲットはARMデバイスなので、すべてのシステムをYocto/OpenEmbeddedでビルドします。YoctoでCMAKE projet buildでプリプロセッサ定義を追加するには

私はcmakeプロジェクトを作成するためのレシピを作成することができます。 それは以下のようになります。

DESCRIPTION = "FANN LIB" 

LICENSE = "CLOSED" 

inherit cmake 

SRCREV = "${AUTOREV}" 

PV = "1.0" 

SRC_URI = "git://github.com/libfann/fann.git;branch=master;protocol=git" 

S = "${WORKDIR}/git" 
BBCLASSEXTEND = "native" 

FILES_${PN} += "/usr/lib/cmake/" 

のコードでは、私がアクティブにしたい「の#ifdef DEBUG」があります。 C/C++ FlagsにDEBUGを追加したいと思います。

は私が

EXTRA_OECMAKE += "CXXFLAGS='-DDEBUG'" 
EXTRA_OECMAKE = "set(CMAKE_CXX_FLAGS "-DDEBUG")" 

を使用することができます。しかしブースは、すべてのCFLAGSを交換し、それは私が望むものではないことがわかった(それに加えて、コンパイルを壊した!)

私はちょうどtahtの-DDEBUGをしたいと思いますが追加されたときコンパイラを呼び出す! :-)

CMakeベースのプロジェクトでYoctoレシピでプリプロセッサ定義を追加するにはどうすればよいですか?

答えて

2

私は(もcmakeのに基づいて)私のレシピファイル内のターゲットのビルドのためにこの割り当てを使用しています:

# This flag is also propagated to CXXFLAGS 
TARGET_CFLAGS += "-DSOME_FLAG" 

CFLAGSはCXXFLAGSに伝播され、なぜ私はわからないので、あなたもTARGET_CXXFLAGSを試すことができますOpenEmbeeddedの変数。 Yocto mega manualを参照してください。

ターゲットビルドに対してのみフラグが追加されます(結果はターゲット上でのみ使用されます)。私はあなたもネイティブのバリアントを構築しているので、BUILD_CXXFLAGSが役に立ちます。 nativesdkのバリアントにはBUILDSDK_CXXFLAGSもあります(これはあなたのケースではありません)。これらの変数は、the manual in the CXXFLAGS variable descriptionに明確に記載されています。ところで

、CMakeのに関連している一つのこと:あなたがあなたのCMakeLists.txtにset(CMAKE_CXX_FLAGS "-DDEBUG")を使用する場合は、右側にCMAKE_CXX_FLAGSを繰り返す必要があり、すなわちset(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEBUG")、そうでない場合は、あなたのフラグが上書きされます。詳細については、this blogを参照してください。

+0

ありがとうございます!できます! – AntoineC

+0

@AntoineC情報をお寄せいただきありがとうございます。だから、答えを受け入れてください。好奇心の外に、どの変数を設定しましたか? –

+0

TARGET_CFLAGSを設定しました。 TARGET_CXXFLAGSを設定しても何も変更しないでください(少なくともFANNプロジェクトの場合) – AntoineC

関連する問題