0

GeometricRecognizer.cppをrun.cppに含めたい、CMakeの解決策(下記)があります。makeを使用する別のプロジェクトに含めたいのですが、makefileの形式も以下に示します。依存関係を追加する方法makefileを使用したGeometricRecognizer.cppの

CMake:

ADD_EXECUTABLE(run run.cpp lib/GeometricRecognizer.cpp)
TARGET_LINK_LIBRARIES(run)

作る :

INCS_GTK=-I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 
INCS=-I/usr/include/freetype2 -I/usr/include/mysql -Iframeworks ${INCS_GTK}
LDLIBS=-lconfig++ -lcxcore -lcv -lGL -lGLU -lglut 
4

1 に答える 1

3

CMake ファイルの次の行には、cpp ファイルが別の cpp ファイルに含まれていません。

ADD_EXECUTABLE(run a.cpp b.cpp)

runこれらのファイルをコンパイルおよびリンクした結果である、a.cppというb.cpp実行可能ターゲットを作成します。

Makefile に次の行を追加します。

MAINCXX=${shell find -name '*.cxx'}
TARGETS=${MAINCXX:%.cxx=%}

コンパイルする実行可能ターゲットを実際にセットアップする 2 つの重要な行と、それらが作成されるソース ファイルです。これらの 2 行でわかるように、ソース ツリー内MAINCXXのすべてのファイルの単なるリストであり、その部分を除いた同じリストになります(つまり、MAINCXX=run.cxx の場合、TARGETS=run.cxx になります)。*.cxxTARGETS.cxx

あなたのメイクファイルは、その特定のユースケースをサポートするように大きく設計されているようです。また、実際のメイクの魔法は、別のメイクファイルを含むメイクファイルの最後の行で発生します。

名前が付けられたファイルを見て、generic.mkそれがどのように設計されているかを理解する必要があります。別のターゲットを追加するだけの場合は、次を追加できます。

 run: run.cpp lib/GeometricRecognizer.cpp
     g++ -o run $(DEFINES) $(INCS) $(WARNINGS) run.cpp lib/GeometricRecognizer.cpp 

ソース ファイルのリストは、GNU Make の組み込み変数に置き換えることができます。

于 2012-10-21T21:11:56.203 に答える