gpt4 book ai didi

c++ - 使用 Make 包含一个 .cpp 文件

转载 作者:行者123 更新时间:2023-11-28 00:53:02 26 4
gpt4 key购买 nike

我想将 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

最佳答案

CMake 文件中的这一行不包含另一个 cpp 文件中的 cpp 文件:

ADD_EXECUTABLE(run a.cpp b.cpp)

它创建一个名为 run 的可执行目标,它是编译 a.cppb.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 中的内置变量替换。

关于c++ - 使用 Make 包含一个 .cpp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13001301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com