如何组合两个单独的makefile来编译程序?

时间:2016-05-31 19:32:29

标签: c++ opencv ubuntu makefile

我有两个makefile,但是,我想在Ubuntu中编译一个程序(test.cpp)的理想情况下有两个。

首先(用于Basler Pylon5相机SDK):

# Makefile for Basler pylon sample program
.PHONY: all clean

# The program to build
NAME       := test

# Installation directories for pylon
PYLON_ROOT ?= /opt/pylon5

# Build tools and flags
LD         := $(CXX)
CPPFLAGS   := $(shell $(PYLON_ROOT)/bin/pylon-config --cflags)
CXXFLAGS   := #e.g., CXXFLAGS=-g -O0 for debugging
LDFLAGS    := $(shell $(PYLON_ROOT)/bin/pylon-config --libs-rpath)
LDLIBS     := $(shell $(PYLON_ROOT)/bin/pylon-config --libs)

# Rules for building
all: $(NAME)

$(NAME): $(NAME).o
    $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)

$(NAME).o: $(NAME).cpp
    $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

clean:
    $(RM) $(NAME).o $(NAME)

第二个(用于OpenCV):

# The program to build
NAME       := test

CFLAGS = `pkg-config --cflags opencv`
LIBS = `pkg-config --libs opencv`

$(NAME) : $(NAME).cpp
    g++ -o $@ $< $(CFLAGS) $(LIBS) 

这可能吗?我是一个非常新的makefiles,我只是想用相机捕捉和处理一些图像。任何帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:0)

  

这可能吗?

没有通用解决方案。另一方面,第二个Makefile是这两行的纯包装器:

CFLAGS = `pkg-config --cflags opencv`
LIBS = `pkg-config --libs opencv`

您需要做的就是将两行集成到第一个Makefile中。例如,类似于您已经拥有的pylon-config,请在all:之前添加

CXXFLAGS   += $(shell pkg-config --cflags opencv)
LDLIBS     += $(shell pkg-config --libs opencv)

应该照顾它。