C/C++混合编译Makefile终于完全Debug了

原创 2006年05月31日 12:47:00
#########################################################################
#name:        RTP Makefile V.1.2
#date:        2006 05 30
#written by:  chen yulin
#usage:       make clean
#             make objs
#             make libs
#             make vserver
#             make vclient
#             make all
#libneed:     libjrtp libjthread
##########################################################################

CC=gcc
CXX=g++

SDLLIBS = $(shell sdl-config --libs)
SDLFLAGS = $(shell sdl-config --cflags)

SERVFLAGS= -O2 -DLINUX
MATH_LIB=-lm
SERVLIBS= $(MATH_LIB) -lpthread -ljrtp

INCL = -I/usr/local/include/jrtplib3 -I/. -I/usr/include/SDL -I/usr/local/include/jthread

CFLAGS = -DUSE_SDL -O2 -DLINUX $(SDLFLAGS)  -pipe -O2 -fno-strength-reduce
CXXFLAGS = -DUSE_SDL -O2 -DLINUX $(SDLFLAGS) -lpthread  -pipe -O2 -fno-strength-reduce

LDFLAGS = -ljrtp -L/usr/X11R6/lib -ljpgenc -ljpgdec -L./ -static -ljthread -lpthread
LFLAGS = -lpthread -L/usr/X11R6/lib -ljpgenc -ljpgdec -lSDL -L./ /usr/local/lib/libjrtp.a /usr/local/lib/libjthread.a
#编译SDL库的时候不能做静态联接-static,需直接指定所用库的地址


OBJECTS= c.o utils.o tcputils.o  encoder.o huffman.o marker.o quant.o picture.o
       
OBJSERVER= s.o v4l.o utils.o tcputils.o  encoder.o huffman.o marker.o quant.o
   
LIB_ENCODE = libjpgenc.a
LIB_ENCODE_OBJECT = v4l.o tcputils.o utils.o encoder.o huffman.o marker.o quant.o jdatatype.h

LIB_DECODE = libjpgdec.a
LIB_DECODE_OBJECT = utils.o encoder.o huffman.o marker.o quant.o picture.o jdatatype.h

all: vserver vclient

objs:  v4l.o utils.o tcputils.o  encoder.o huffman.o marker.o quant.o picture.o

libs:  libjpgenc libjpgdec

clean:
    @echo "Cleaning up directory."
    rm -f *.a *.o  ser vserver vclient core *~ log *.jpg *.bak errlog



vclient: $(OBJECTS)
    $(CXX) $(CXXFLAGS) -o vclient $(OBJECTS) $(MATH_LIB) $(SDLLIBS) $(LFLAGS)

vserver: $(OBJSERVER)
#    g++ -I/usr/local/include/jrtplib3 -I/usr/local/include/jthread -L/usr/local/lib  -o ser s.cpp libjpgenc.a  -lpthread -lm -DLINUX -ljrtp  -ljthread
    $(CXX) $(SERVFLAGS) -o vserver $(OBJSERVER) $(SERVLIBS) $(LDFLAGS)
   

libjpgenc: $(LIB_ENCODE_OBJECT)
    ar -cur $(LIB_ENCODE) $(LIB_ENCODE_OBJECT)     //自定义库的联接

libjpgdec: $(LIB_DECODE_OBJECT)
    ar -cur $(LIB_DECODE) $(LIB_DECODE_OBJECT)



#只编译不链接
c.o:         c.cpp  jconfig.h utils.h
        $(CXX) -c  $(CXXFLAGS) $(SDLLIBS) $(INCL)  $(MATH_LIB) -o $@ $<
s.o:        s.cpp
        $(CXX) -c -pipe -O2 -fno-strength-reduce  $(INCL) -o $@ $<
#        g++ -c -pipe -O2 -fno-strength-reduce -I/usr/local/include/jrtplib3 -I/usr/local/include/jthread -o s.o s.cpp       



v4l.o:        v4l.c v4l.h
        $(CC) $(SERVFLAGS) -c -o $@ $<
       
utils.o:    utils.c utils.h
        $(CC) $(SERVFLAGS) -c -o $@ $<


tcputils.o:    tcputils.c tcputils.h
        $(CC) $(SERVFLAGS) -c -o $@ $<
       
encoder.o:    encoder.c encoder.h
        $(CC) $(SERVFLAGS) -c -o $@ $<
       
huffman.o:    huffman.c huffman.h
        $(CC) $(SERVFLAGS) -c -o $@ $<
       
marker.o:    marker.c marker.h
        $(CC) $(SERVFLAGS) -c -o $@ $<
       
quant.o:    quant.c quant.h
        $(CC) $(SERVFLAGS) -c -o $@ $<
       
picture.o:    picture.c picture.h
        $(CC) $(SERVFLAGS) -c -o $@ $<

修改被cpp函数调用的头文件,添加如下:
#ifdef __cplusplus
extern "C" {
#endif
..............

#ifdef __cplusplus
}
#endif

C和C++混合编程的Makefile的编写!

在项目实践中,经常遇到C和C++混合编程的情况。
  • tao_627
  • tao_627
  • 2014年07月26日 18:57
  • 5384

C/C++ 通用 Makefile

 C/C++ 通用 MakefileGeneric Makefile for C/C++ Program ============================================...
  • c395565746c
  • c395565746c
  • 2011年05月29日 14:01
  • 1690

C/C++通用Makefile

本文推荐了一个用于对 C/C++ 程序进行编译和连接以产生可执行程序的通用 Makefile。  在使用 Makefile 之前,只需对它进行一些简单的设置即可;而且一经设置,即使以后对源程序文件有...
  • i7thTool
  • i7thTool
  • 2016年07月08日 15:01
  • 879

c, c++用makefile编译工程

基本思路: 最外层有三个文件: Makefile, Make.share, Make.include. 每个工程目录中都有一个Makefile文件. 其中最外层的Makefile是外壳部分....
  • patdz
  • patdz
  • 2012年04月28日 07:50
  • 5981

解决g++编译添加参数"支持C++11标准"的问题

今天编写了关于智能指针的一个程序,使用g++ smrtptrs.cpp -o t时,编译不过,最终发现是忘记加command line option的问题。...
  • derkampf
  • derkampf
  • 2017年05月23日 13:29
  • 1049

g++ 编译c++11

使用auto类型,需要在编译时加上:--std=c++11 makefile: main:main.o g++ main.o -o main main.o:test.cpp st...
  • razy_Monkey
  • razy_Monkey
  • 2017年01月02日 22:09
  • 592

makefile多目录的.c 格式.cpp混合编译

# # c.cpp混合编译的makefile模板 # # BIN = test.exe CC = gcc CPP = g++ #这里只加入库头文件路径及库路径 INCS = -I"c:/mingw...
  • yangbingzhou
  • yangbingzhou
  • 2015年12月08日 14:21
  • 4192

c/c++混合编程Makefile范例

# 指令编译器和选项 CC=g++ #-g 添加gdb调试信息;-Wall 提示warning信息;-O3 表示第3级优化; CFLAGS=-g -Wall -O3 # 可执行文件   TARGET...
  • haohaojian
  • haohaojian
  • 2017年01月20日 13:12
  • 900

linux C与C++混合编程通用makefile

  • 2010年06月23日 14:13
  • 3KB
  • 下载

[allmake] -- 交叉编译原来如此简单

[allmake] -- 交叉编译原来如此简单 原创文章,转载请注明出处:http://www.cnblogs.com/johnd/p/5060530.html 前言: 做嵌入式开发的攻城狮朋友们,...
  • allmake
  • allmake
  • 2015年12月20日 12:06
  • 1846
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C/C++混合编译Makefile终于完全Debug了
举报原因:
原因补充:

(最多只允许输入30个字)