C++ 使用Make包含一个.cpp文件
我想在run.cpp中包含geometrycrecognizer.cpp,我有一个CMake的解决方案(如下所述),我想在另一个使用makefile格式的项目中包含它。下面也给出了makefile的格式。如何使用makefile添加geometrycrecognizer.cpp的依赖关系 CMake:C++ 使用Make包含一个.cpp文件,c++,makefile,cmake,C++,Makefile,Cmake,我想在run.cpp中包含geometrycrecognizer.cpp,我有一个CMake的解决方案(如下所述),我想在另一个使用makefile格式的项目中包含它。下面也给出了makefile的格式。如何使用makefile添加geometrycrecognizer.cpp的依赖关系 CMake: ADD_EXECUTABLE(run run.cpp lib/GeometricRecognizer.cpp) TARGET_LINK_LIBRARIES(run) 制作: INCS_GTK=-
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
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似乎在很大程度上是为支持特定用例而设计的,而且真正的makefile魔术发生在makefile的最后一行,其中包含另一个makefile
您需要查看名为generic.mk
的文件,了解它是如何设计的。如果只想添加另一个目标,可以添加以下内容:
run: run.cpp lib/GeometricRecognizer.cpp
g++ -o run $(DEFINES) $(INCS) $(WARNINGS) run.cpp lib/GeometricRecognizer.cpp
源文件列表可以替换为GNU Make中的内置变量。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似乎在很大程度上是为支持特定用例而设计的,而且真正的makefile魔术发生在makefile的最后一行,其中包含另一个makefile
您需要查看名为generic.mk
的文件,了解它是如何设计的。如果只想添加另一个目标,可以添加以下内容:
run: run.cpp lib/GeometricRecognizer.cpp
g++ -o run $(DEFINES) $(INCS) $(WARNINGS) run.cpp lib/GeometricRecognizer.cpp
源文件列表可以替换为GNU Make中的内置变量。编辑,格式化导致了问题三行?这就是整个Makefile?我真的很怀疑。这是一个小部分,这里是整个makefile编辑,格式是造成问题的三行?这就是整个Makefile?我真的很怀疑。那只是一小部分,这是整个makefile