2012-10-21 102 views
0

我想將GeometricRecognizer.cpp包含到run.cpp中,我有解決方案(下面提到)爲CMake工作,我想將它包含在另一個使用makefile格式的項目中如何使用makefile添加GeometricRecognizer.cpp的依賴關係?使用Make包含一個.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 
+0

問題是什麼? – anatolyg

+0

編輯,格式化導致問題 – rajat

+1

三行?這是整個Makefile?我真的懷疑這一點。 –

回答

3

這條線在CMake的文件不包括在其他CPP文件中的CPP文件:

ADD_EXECUTABLE(run a.cpp b.cpp) 

創建可執行編號爲run的目標是編譯a.cpp和的結果並鏈接這些文件。

在你的Makefile下面幾行:

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

是可執行的目標來編譯和源文件,它們從創建這實際上設置了兩個重要的線。在這兩行中可以看到MAINCXX僅僅是源樹中所有文件的列表*.cxx,並且TARGETS將只是沒有.cxx部分的相同列表(因此如果MAINCXX = run.cxx,那麼它將是TARGETS = run.cxx )

你的makefile好像被嚴格設計來支持那個特定的用例,也是真正的make magic發生在Makefile的最後一行,它包含了另一個Makefile。

您需要查看名爲generic.mk的文件並瞭解其設計方式。如果你只是想添加一個目標,你可以添加以下內容:

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

源文件的列表可以通過內建變量在GNU更換製作。

+0

這太棒了,謝謝你的幫助。 – rajat

相關問題