c++ - 通过 Makefile 编译 2 个文件不起作用

标签 c++ makefile gstreamer

我想一次编译两个.cpp 文件。 gstapp.cpp 正在编译,gnew.cpp 被忽略。我忽略了什么?

生成文件:

# generated from pkg-config --cflags gstreamer-0.10
CFLAGS=-pthread -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 

# generated from pkg-config --libs gstreamer-0.10
LDFLAGS=-lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -pthread -lgthread-2.0 -pthread -lglib-2.0 -lxml2 -lgstapp-0.10     

CFLAGS+=-I/usr/include/opencv2

# there are more, but not needed form now: -lopencv_calib3d -lopencv_contrib -lopencv_flann -lopencv_obj 
LDFLAGS+=-lstdc++ -lopencv_core -lopencv_features2d -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_video

gstapp: gstapp.o
    gcc $(LDFLAGS) -o $@ $<

gstapp.o: gstapp.cpp
    gcc -c $(CFLAGS) -o $@ $<

gnew: gnew.o
    gcc $(LDFLAGS) -o $@ $<

gnew.o: gnew.cpp
    gcc -c $(CFLAGS) -o $@ $<

最佳答案

您可能需要一个all 规则来触发两者的编译。通过只运行不带参数的 make,它将运行它遇到的第一条规则(例如 gstapp:),然后退出。

所以在 LDFLAGS 和 gstapp 行之间放置

all: gstapp gnew

这第一个(又名默认)规则将把你的两个文件作为依赖项,并在你运行 makemake all 时编译它们。

关于c++ - 通过 Makefile 编译 2 个文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27974585/

相关文章:

c++ - Qt 删除 QVBoxLayout 上的小部件之间的空白区域

c# - 在没有 bool 条件的情况下在 Update() 中调用一次

makefile - 这个 makefile 架构有什么意义?

c++ - Make 每次都编译所有文件,包括未更改的文件

c - 如何在 C 程序中使用 Gstreamer 在视频中动态添加和删除字幕

opencv - 为什么将Gstreamer用于OpenCV后端?

ffmpeg - 识别 RTSP 流是否包含 PPS 和 SPS 信息

c++ - 我正在使用 MS Visual C++ Express 为 C++ 寻找一个简单的套接字接口(interface)

c++ - 为什么插入和提取 std::priority_queue 都需要对数时间?

c - GNU、autotools 的 makefile - 构建 C 语言源代码的规则和方法