Makefile12--自动生成依赖关系(中)

18 篇文章 4 订阅
订阅专栏

学习自狄泰软件学院唐佐临老师Makefile课程,文章中图片取自老师的PPT,仅用于个人笔记。


实验1 :当前目录中没有 test.txt文件,makefile 中有对应规则
实验2 :makefile 中 没有 include关键字后面 所对应的目标,当前目录也没有对应文件
实验3:当前目录中没有 test.txt文件,makefile 中有对应规则,并在规则中创建 test.txt .执行两次 make all
实验4 : 在实验3的基础上,在 test.txt文件中随意添加一段字符串,然后make(不是make all)
实验5 :规则中的每一个命令默认是在一个新的进程中执行
实验6:规则中的每一个命令默认是在一个新的进程中执行,使用接续符让所有命令在同一进程中执行。
实验7:包含所有的依赖文件,并得到依赖文件,最后在依赖文件中填充依赖信息。
实验8:-include :屏蔽了警告提示信息


在这里插入图片描述

在makefile中, include关键字后面可以跟如下三类:

foo.mk :具体的想要包含的文件名

*.mk :通配符的方式,指包含当前目录中所有的.mk文件,将当前目录中所有的.mk文件中的的内容全部搬到当前的makefile中来。

$(var) :某个变量值,意思是 包含这个变量所代表的那一个文件的内容

在这里插入图片描述

在这里插入图片描述

实验1 :当前目录中没有 test.txt文件,makefile 中有对应规则

.PHONY : all

include test.txt

all : 
	@echo "this is all"
	
test.txt :
	@echo "test.txt"
		

mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make all
makefile:4: test.txt: No such file or directory
this is test.txt
this is all
mhr@ubuntu:~/work/makefile1$ 

实验2 :makefile 中 没有 include关键字后面 所对应的目标,当前目录也没有对应文件

.PHONY : all

include test.txt

all : 
	@echo "this is all"
	

/makefile1$ make all
makefile:4: test.txt: No such file or directory
make: *** No rule to make target 'test.txt'.  Stop.
mhr@ubuntu:~/work/makefile1$ 

实验3:当前目录中没有 test.txt文件,makefile 中有对应规则,并在规则中创建 test.txt .执行两次 make all

.PHONY : all

include test.txt

all : 
	@echo "this is all"
	
test.txt :
	@echo "test.txt"
		
	#创建 test.txt
	@touch test.txt
	


mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ ls
func.c  func.h  func.o  hello.out  main.c  main.o  makefile
mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make all
makefile:5: test.txt: No such file or directory
this is test.txt
this is all
mhr@ubuntu:~/work/makefile1$ ls
func.c  func.h  func.o  hello.out  main.c  main.o  makefile  test.txt
mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make all
this is all
mhr@ubuntu:~/work/makefile1$ 

第一次执行 make all 时候,执行include关键字 所对应的规则,打印字符串病创建 test.txt文件。结果在当前目录生成了test.txt文件。

第二次执行 make all的时候,include关键字找到了 对应的test,txt文件,于是将 test.txt文件里面的内容拷贝过来了,就没必要再去执行 对应的规则了。


实验4 : 在实验3的基础上,在 test.txt文件中随意添加一段字符串,然后make(不是make all)

test.txt

other :
	@echo "this is $@"

makefile

.PHONY : all

include test.txt

all : 
	@echo "this is all"
	
test.txt :
	@echo "test.txt"
		
	#创建 test.txt
	@touch test.txt


mhr@ubuntu:~/work/makefile1$ make
this is other
mhr@ubuntu:~/work/makefile1$ 

说明:
此处执行的是 make,并不是 make all , make 会去执行 makefile 中最顶层的规则,而此时 makefie中最顶层的规则 已经不是 all 了,因为 include关键字已经将 test.txt 中的内容拷贝到了nakefile 的最顶层了,所以此时最顶层的规则是 test.txt中的内容:

other :
	@echo "this is $@"

在这里插入图片描述

在这里插入图片描述

实验5 :规则中的每一个命令默认是在一个新的进程中执行

makefile

.PHONY : all

all :
	mkdir test
	cd test
	mkdir subtest
	

mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make
mkdir test
cd test
mkdir subtest
mhr@ubuntu:~/work/makefile1$ 

mhr@ubuntu:~/work/makefile1$ ls -l
total 48
-rw-rw-r-- 1 mhr mhr   93 Dec 27 04:13 func.c
-rw-rw-r-- 1 mhr mhr   83 Dec 27 05:58 func.h
-rw-rw-r-- 1 mhr mhr 1552 Dec 27 05:58 func.o
-rwxrwxr-x 1 mhr mhr 8656 Dec 27 05:58 hello.out
-rw-rw-r-- 1 mhr mhr   81 Dec 27 04:13 main.c
-rw-rw-r-- 1 mhr mhr 1368 Dec 27 05:58 main.o
-rw-rw-r-- 1 mhr mhr   62 Dec 27 07:02 makefile
drwxrwxr-x 2 mhr mhr 4096 Dec 27 07:03 subtest
drwxrwxr-x 2 mhr mhr 4096 Dec 27 07:03 test
-rw-rw-r-- 1 mhr mhr   28 Dec 27 06:57 test.txt
mhr@ubuntu:~/work/makefile1$ 

结果是分别创建了test 和 subtest文件夹,并不是我们想要的结果。就是因为makefile 中 规则中的每一个命令默认是在一个新的进程中执行,上面规则中的三个命令是在三个进程中执行的 没有连贯性

进程x :mkdir test 
进程结束
进程y: cd test
进程结束
进程z:mkdir subtest
进程结束

实验6:规则中的每一个命令默认是在一个新的进程中执行,使用接续符让所有命令在同一进程中执行。

注意 这里的 \ 仅仅是格式的连接符,表示这些代码在同一行。而 ;才是makefile的命令接续符,表示这些命令在同一个进程中执行。

.PHONY : all

all :
	set -e; \
	mkdir test; \
	cd test; \
	mkdir subtest
	
	
mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make
set -e; \
mkdir test; \
cd test; \
mkdir subtest
mhr@ubuntu:~/work/makefile1$ 



mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ ll
total 52
drwxrwxr-x 3 mhr mhr 4096 Dec 27 07:10 ./
drwxrwxr-x 4 mhr mhr 4096 Dec 15 03:18 ../
-rw-rw-r-- 1 mhr mhr   93 Dec 27 04:13 func.c
-rw-rw-r-- 1 mhr mhr   83 Dec 27 05:58 func.h
-rw-rw-r-- 1 mhr mhr 1552 Dec 27 05:58 func.o
-rwxrwxr-x 1 mhr mhr 8656 Dec 27 05:58 hello.out*
-rw-rw-r-- 1 mhr mhr   81 Dec 27 04:13 main.c
-rw-rw-r-- 1 mhr mhr 1368 Dec 27 05:58 main.o
-rw-rw-r-- 1 mhr mhr   79 Dec 27 07:07 makefile
drwxrwxr-x 3 mhr mhr 4096 Dec 27 07:10 test/
-rw-rw-r-- 1 mhr mhr   28 Dec 27 06:57 test.txt
mhr@ubuntu:~/work/makefile1$ cd test/
mhr@ubuntu:~/work/makefile1/test$ ll
total 12
drwxrwxr-x 3 mhr mhr 4096 Dec 27 07:10 ./
drwxrwxr-x 3 mhr mhr 4096 Dec 27 07:10 ../
drwxrwxr-x 2 mhr mhr 4096 Dec 27 07:10 subtest/
mhr@ubuntu:~/work/makefile1/test$ 

在这里插入图片描述

实验7:得到依赖文件,并包含所有的依赖文件

.PHONY : all clean

MKDIR := mkdir
RM := rm -fr
CC := gcc

#将所有当前目录中的.c作为后缀的文件的文件名作为列表拿到,并保存到变量 SRCS 中
SRCS := $(wildcard *.c)
#变量的值替换 替换后缀
DEPS := $(SRCS:.c=.dep)

#包含依赖文件,因为依赖文件中包含目标的部分依赖
#此时当前目录并没有依赖文件,所以利用 include关键字特性,寻找依赖文件对应规则,在规则中我们可以自己生成依赖文件。
include $(DEPS)

all :
	@echo "all"
	
#针对目录结构的模式规则
%.dep : %.c
	@echo "Creating $@ ..."
	@set -e; \
	$(CC) -MM -E $^ | sed 's,\(.*\)\.o[ :]*,objs/\1.o : ,g' > $@
	
clean :
	$(RM) $(DEPS)
	


mhr@ubuntu:~/work/makefile1$ make all
makefile:11: main.dep: No such file or directory
makefile:11: func.dep: No such file or directory
Creating func.dep ...
Creating main.dep ...
all
mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ ll
total 52
drwxrwxr-x 2 mhr mhr 4096 Dec 27 08:07 ./
drwxrwxr-x 4 mhr mhr 4096 Dec 15 03:18 ../
-rw-rw-r-- 1 mhr mhr   93 Dec 27 04:13 func.c
-rw-rw-r-- 1 mhr mhr   28 Dec 27 08:07 func.dep
-rw-rw-r-- 1 mhr mhr   83 Dec 27 05:58 func.h
-rw-rw-r-- 1 mhr mhr 1552 Dec 27 05:58 func.o
-rwxrwxr-x 1 mhr mhr 8656 Dec 27 05:58 hello.out*
-rw-rw-r-- 1 mhr mhr   81 Dec 27 04:13 main.c
-rw-rw-r-- 1 mhr mhr   28 Dec 27 08:07 main.dep
-rw-rw-r-- 1 mhr mhr 1368 Dec 27 05:58 main.o
-rw-rw-r-- 1 mhr mhr  285 Dec 27 08:07 makefile
mhr@ubuntu:~/work/makefile1$ 

从结果看 已经生成了两个依赖文件:main.dep,func.dep,内容如下
main.dep

objs/main.o : main.c func.h

func.dep

objs/func.o : func.c func.h

实验8:-include :屏蔽了警告提示信息

.PHONY : all clean

MKDIR := mkdir
RM := rm -fr
CC := gcc

SRCS := $(wildcard *.c)
DEPS := $(SRCS:.c=.dep)

include $(DEPS)

all :
	@echo "all"
	
%.dep : %.c
	@echo "Creating $@ ..."
	@set -e; \
	$(CC) -MM -E $^ | sed 's,\(.*\)\.o[ :]*,objs/\1.o : ,g' > $@
	
clean :
	$(RM) $(DEPS)
	
mhr@ubuntu:~/work/makefile1$ 
mhr@ubuntu:~/work/makefile1$ make all
Creating func.dep ...
Creating main.dep ...
all
mhr@ubuntu:~/work/makefile1$ 
Makefile学习之路11 —— 自动生成依赖关系
weixin_41477765的博客
10-08 211
本文写于 狄泰软件学院 Makefile课程 学后感 编译器的行为缺陷 - 预处理器将头文件的代码直接插入源文件 - 编译器只通过预处理后的源文件产生目标文件 - 因此 规则以源文件为依赖,命令可能无法执行 实验解决方案的问题 - 当头文件作为依赖条件出现于每个目标对应的规则 - 当头文件改动,任何源文件都将被重新编译(编...
makefile-- 自动生成依赖关系 示例
qq_28944301的博客
10-07 695
自动生成依赖关系 1、编译行为带来的缺陷 预处理器将头文件的代码直接插入源文件 编译器只通过预处理后的源文件产生目标文件 因此,规则以源文件为依赖,命令可能无法执行 示例1 观察以下makefile文件是否正确:当修改func.h宏HELLO的内容后,执行make命令发现,编译器无法更新main.c和func.c,进而无法更新执行的结果:原因在于func.h更新的内容无法自动更新到f...
跟我一起写 Makefile(十二)
热门推荐
陈皓专栏 【空谷幽兰,心如皓月】
02-25 2万+
 隐含规则————在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile的“隐含的”,早先约定了的,不需要我们再写出来的规则。“隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的Makef
Makefile自动依赖
02-26 547
Makefile自动依赖   Makefile生成自动依赖的方法有两种: 1.  将所有.o文件的依赖关系写入单独文件,然后在Makefile调用该文件 2.  每个.c文件对应一个.d文件,将依赖关系写入.d文件     一、对于第一种方法,Makefile的写法如下: #file start CC = gcc SRCS := $(wildcard *.c) O
12-自动生成依赖关系
清浅
04-13 238
文章目录1. include关键字2. makefile 命令的执行机制3. 自动生成依赖关系的初步探索 1. include关键字 makefile 的 include 关键字: 类似 C 语言的 include 将其它文件的内容原封不动的搬入当前文件 make 对 include 关键字的处理方式: 在当前目录搜索或指定目录搜索目标文件 搜索成功,将文件内容搬入当前文件 搜索失...
第十二篇 自动生成依赖关系()
diaozhiwa5526的博客
02-06 104
为了完成自动生成依赖关系的目的,我们还需要引入几个知识点,下面首先引入makefile的关键字include。 include关键字: makefile的include关键字类似于C语言的include关键字,将其它文件的内容原封不动的搬到当前文件。具体用法如下所示: *.mk代表当前目录下的所有mk后缀的文件,$(var)表示var变量所代表的文件。 ...
makefile-auto-headers:自动生成C头依赖项的Makefile
02-09
这是因为`.headerdeps`目录会存储自动生成依赖信息,这些信息是由`make`命令在运行时动态生成的,它们不是源代码的一部分,也不应该被版本控制系统追踪。忽略这个目录可以避免不必要的版本库膨胀,同时防止误提交...
教你玩转makeflie(五)自动生成依赖关系
Exp.Joker
06-18 1688
当func.h发生改变,理应重新编译,但makefile只检查两个源文件,发现无改动是最新的,所以不会重新编译,导致错误。OBJS := func.o main.ohello.out : $(OBJS)@gcc -o $@ $^@echo "Target File ==> $@"$(OBJS) : %.o : %.c func.h@gcc -o $@ -c $...
Makefile自动生成依赖关系实例
03-16
本文将深入探讨`Makefile`自动生成依赖关系的实例,以及在实际开发的应用。 首先,`Makefile`是GNU Make工具的核心,它定义了一系列规则来编译和链接程序。通过`Makefile`,开发者可以设置目标、依赖项和命令,...
Makefile 自动生成依赖关系
qq_42518781的博客
02-19 379
第一次通过博客写学习心得: 注:以下是根据狄泰软件学院的课程内容所做的笔记 Makefile 自动生成依赖关系在实际工程应用起着不可替代的作用。 include关键字的黑洞之一:加上减号之后不仅关闭可警告信息还关闭了错误信息。 include关键字的黑洞之二:当包含的文件存在是,make的时候首先检查改文件有没有作为目标存在,如果作为目标存在就再次检查目标的依赖文件的时间戳是否比较新,是就执行该...
12课 - 自动生成依赖关系
梦心之魂的博客
09-05 19
1. makefile的include关键字 类似C语言的include 将其他文件的内容原封不动地搬入当前文件        make对include关键字的处理方式:在当前目录搜索或指定目录搜索目标文件: 1)搜索成功:将文件内容搬入当前makefile 2)搜索失败:产生警告 以文件名作为目标查找并执行对应规则; 当文件名对应的规则不存在时,最终产生错误...
Makefile依赖问题-4自动依赖
最新发布
wggplus的博客
06-10 1630
我们用简单、粗暴、无脑的方式解决头文件依赖的问题,但是这种解决方式有几个缺点;1、比较容易想到的是,正儿八经的项目头文件都是比较多的,很容易出错。2、对照缺点,好的解决方案应该是能自动就不要手动:1、通过命令自动生成源文件.c对头文件的依赖。(什么命令?2、命令生成的依赖结果能够放到Makefile。(怎么放?3、当头文件改动后,自动确认需要重新编译的文件。(怎么自动确认?
makefile高级用法--隐含规则
Stroller
12-31 668
makefile高级用法--隐含规则 2008-09-09 21:01:02 分类: C/C++ 隐含规则 ———— 在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile的“隐
makefile自动依赖[转]
weixin_30815427的博客
07-21 158
Makefile自动依赖 Makefile生成自动依赖的方法有两种: 1. 将所有.o文件的依赖关系写入单独文件,然后在Makefile调用该文件 2. 每个.c文件对应一个.d文件,将依赖关系写入.d文件 一、对于第一种方法,Makefile的写法如下: #file start CC = gcc SRCS := $(wildca...
Linux基础学习笔记十一:Makefile依赖关系理解
耐心的小黑的博客
04-29 5647
一、前言 最近在看makefile,各文件之间的依赖关系整的我有点懵,看了好久还是迷迷糊糊,可能是我看的资料比较少。反正下面就通过一个例子逐渐引出自己的理解,完全是自己瞎琢磨,有错误欢迎指正!!! 一个简单的例子:4个.c文件,3个.h文件,其mytest调用了test1,test2,test3;test1调用了test2,test3;test2调用了test3。 4个.c文件如下: 3个.h文件如下: 二、Makefile写法 1、最常规的写法: mytest: mytest.o test1.o
Makefile 自动生成依赖关系并加载依赖文件
weixin_47564352的博客
04-05 235
.PHONY: all clean EXE := app.out DIR_OBJS := objs DIR_EXES := exes DIR_DEPS := deps DIRS := $(DIR_OBJS) $(DIR_EXES) $(DIR_DEPS) SRCS := $(wildcard *.c) OBJS := $(SRCS:.c=.o) OBJS := $(addprefix $(DIR_OBJS)/, $(OBJS)) DEPS := $(SRCS:.c=....
Makefile13--自动生成依赖关系(下) include关键字暗黑操作
奶牛养殖场小马
12-28 365
学习自狄泰软件学院唐佐临老师Makefile课程,文章图片取自老师的PPT,仅用于个人笔记。 实验1 :成功创建了.dep文件,并且将各个.dep文件 放到 deps文件夹下,但是 func.dep文件被重复创建 实验2 :修正 func.dep 文件被重复创建 实验3 :进一步优化,如果是 make clean 不包含 include关键字后面的内容进来。 实验4 include黑暗操作1...
Makefile11--自动生成依赖关系(上)
奶牛养殖场小马
12-27 315
学习自狄泰软件学院唐佐临老师Makefile课程,文章图片取自老师的PPT,仅用于个人笔记。 实验1 func.h #ifndef FUNC_H #define FUNC_H #define HELLO "Hello D.T." void foo(); #endif func.c #include "stdio.h" #include "func.h" void foo() {...
makefile-rpm编译软件,输出依赖软件包的编译顺序
ccf19881030的专栏
04-28 3673
最近在iMX6x开发板下制作Linux根文件系统,前期需要自己整理与平台无关的Core软件包的依赖关系、修改软件包对应的Spec文件、将下载的.tar.gz等源代码包打包成rpm包,然后使用rpmbuild编译打包成rpm包,最后rpm安装。很头痛的一个问题就是整理软件包的依赖关系、确定它们的编译顺序。    可以从http://www.linuxfromscratch.org/blfs/vie
使用GNU Makefile自动化生成依赖关系
"自动生成依赖性-makefile PPT" 在软件开发,特别是涉及大量源代码的项目,管理编译过程是一项重要的任务。`Makefile`是自动化编译的基石,它定义了项目的构建规则,使得只需一条命令就能完成整个工程的编译。...
写文章

热门文章

  • LVDS接口详解 93558
  • V4L2视频驱动框架---v4l2_device管理模块简述 21408
  • Android HAL 层框架分析以及代码示例 13068
  • Android系统定时开关机实现简述 11504
  • Linux摄像头UVC驱动第五篇--启动传输之设置摄像头参数 7856

分类专栏

  • 音视频 12篇
  • linux文件系统 6篇
  • USB系统 4篇
  • 总线篇 1篇
  • MMC子系统 1篇
  • 以太网驱动 4篇
  • Audio驱动 4篇
  • Video驱动 16篇
  • TTY驱动 2篇
  • 操作系统篇 37篇
  • Linux系统编程 111篇
  • Linux驱动 36篇
  • C语言基础回炉 38篇
  • C++基础回炉 61篇
  • Makefile 18篇
  • QT 36篇
  • Android系统分析篇 13篇
  • Android系统杂记 24篇
  • Linux操作系统篇 4篇
  • 杂记 14篇
  • 数据结构回炉 7篇
  • shell 1篇

最新评论

  • 十_信号8 - sigprocmask() 设置信号集当中信号的mask信号屏蔽字

    冰红茶兑滴水: 什么书

  • 16_网络IPC13-流式套接字_静态进程池版

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)增加条理清晰的目录;(2)使用更多的站内链接;(3)增加除了各种控件外,文章正文的字数。

  • 16_网络IPC12-流式套接字_并发版

    CSDN-Ada助手: 云原生时代,Nginx是否还是很重要,还是说云原生里的网关能把Nginx消灭掉?

  • 16_网络IPC11-流式套接字

    CSDN-Ada助手: 如何衡量企业网络的性能指标?

  • 16_网络IPC10-TCP传输简析

    CSDN-Ada助手: TCP 协议中的 FIN 握手是什么?有什么作用?

大家在看

  • 学习STM32的震动开关 693
  • 【深度学习】Transformer机器翻译模型,了解有关机器翻译的知识,seq2seq架构,掌握使用Transformer构建机器翻译模型的实现过程 576
  • 基于mimo系统的信道估计算法matlab仿真,对比LS,MMSE以及OMP压缩感知三种算法
  • 自然语言处理的算法:从SVM到Attention
  • Docker Compose 搭建 Redis 哨兵集群模式搭建详解(1主2从+3哨兵)(包含主从复制的搭建) (保证一遍学会) 1371

最新文章

  • 16_网络IPC16-TCP与UDP的消息保护边界
  • 17_高级进程间通信 UNIX域套接字1
  • 16_网络IPC15-Socket Select 构建高效网络通信模型
2024年39篇
2023年11篇
2022年32篇
2021年107篇
2020年123篇
2019年93篇
2018年42篇
2017年15篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux老A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家呈贡玻璃钢雕塑厂家哪家好外贸玻璃钢雕塑厂家漯河室内校园玻璃钢景观雕塑商场春节中庭美陈玻璃钢成品雕塑报价防城港玻璃钢雕塑用途重庆人物玻璃钢雕塑定制江西雕塑玻璃钢雕塑定制商场美陈空间咸阳玻璃钢花盆定做白色玻璃钢花盆南宁学校玻璃钢雕塑玻璃钢雕塑底座图片玻璃钢花盆怎么养安顺玻璃钢座椅雕塑设计玻璃钢烤漆雕塑厂家北京周年庆典商场美陈现价运城水景校园玻璃钢景观雕塑甘肃人物玻璃钢雕塑设计江苏装饰商场美陈哪家好福建多彩玻璃钢雕塑图片玻璃钢雕塑布朗熊自己怎么制作玻璃钢花盆模具玻璃钢雕塑哪里厂家多东莞玻璃钢人物雕塑销售方法赤峰小区玻璃钢雕塑价格福建主题商场美陈生产厂家中山玻璃钢天鹅雕塑天筑玻璃钢雕塑张家口玻璃钢仿真水果雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化