我想将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
答案 0 :(得分: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=%}
实际设置可执行目标的两个重要行是否可以编译,以及创建它们的源文件。从这两行中可以看出MAINCXX
只是源树中所有文件*.cxx
的列表,而TARGETS
只是没有.cxx
部分的同一列表(所以如果MAINCXX = run.cxx那么它将是TARGETS = run.cxx)
你的makefile似乎设计得很大,以支持特定的用例,真正的Make魔法发生在Makefile的最后一行,它包含另一个Makefile。
您需要查看名为generic.mk
的文件并了解其设计方式。如果您只想添加其他目标,可以添加以下内容:
run: run.cpp lib/GeometricRecognizer.cpp
g++ -o run $(DEFINES) $(INCS) $(WARNINGS) run.cpp lib/GeometricRecognizer.cpp
源文件列表可以用GNU Make中的内置变量替换。