[项目][WebServer][Makefile & Shell]详细讲解

目录


1.Makefile

  • 为了方便构建项目,并将其发布,使用Makefile来管理构建项目
makefile 复制代码
bin = httpserver
cgi = test_cgi
cc = g++
GLD_FLAGS = -std=c++11 -D DEBUG_SHOW
LD_FLAGS = $(GLD_FLAGS) -lpthread
src = main.cc
curr = $(shell pwd)

.PHONY:ALL
ALL:$(bin) $(cgi)

$(bin):$(src)
	$(cc) -o $@ $^ $(LD_FLAGS)

$(cgi):$(curr)/CGI/*.cc
	$(cc) -o $@ $^ $(GLD_FLAGS)

.PHONY:output
output:
	mkdir output
	cp $(bin) output
	cp -rf wwwroot output
	cp $(cgi) output/wwwroot
	cp ./CGI/shell_cgi.sh output/wwwroot
	cp ./CGI/python_cgi.py output/wwwroot

.PHONY:clean
clean:
	rm -f $(bin) $(cgi)
	rm -rf output

2. build.sh

  • 在项目后期,构建项目并发布时,要执行以下指令,略显繁琐,所以将其放进shell脚本内
    • make clean
    • make
    • make output
  • 后面构建项目时,只需要./build.sh,则可一键构建项目,并将其发布
sh 复制代码
#!/bin/bash

make clean
make
make output

3.test.sh

  • 在项目后期,测试项目时,为测试发布版本,要执行以下指令,略显繁琐,所以将其放进shell脚本内
    • ./build.sh
    • cd ./output
    • ./httpserver PORT
  • 后面测试项目时,只需要./test.sh,则可一键发布,并切换至发布目录下,直接运行项目
sh 复制代码
#!/bin/bash

./build.sh
cd ./output
./httpserver PORT
相关推荐
2501_9418771338 分钟前
大规模系统稳定性建设方法论与工程实践分享
java·开发语言
2501_941820491 小时前
面向零信任安全与最小权限模型的互联网系统防护设计思路与多语言工程实践分享
开发语言·leetcode·rabbitmq
浩瀚地学1 小时前
【Java】面向对象进阶-接口
java·开发语言·经验分享·笔记·学习
cpp_25011 小时前
P1583 魔法照片
数据结构·c++·算法·题解·洛谷
fpcc1 小时前
跟我学C++中级篇——constinit避免SIOF
c++
2501_941802481 小时前
面向微服务限流、熔断与降级协同的互联网系统高可用架构与多语言工程实践分享
开发语言·python
2501_941875281 小时前
分布式系统中的安全权限与审计工程实践方法论经验总结与多语言示例解析分享
开发语言·rabbitmq
无限进步_1 小时前
【C语言】堆排序:从堆构建到高效排序的完整解析
c语言·开发语言·数据结构·c++·后端·算法·visual studio
雾岛听蓝1 小时前
STL 容器适配器:stack、queue 与 priority_queue
开发语言·c++
CSDN_RTKLIB1 小时前
【One Definition Rule】多编译单元定义同名全局变量
开发语言·c++