当前位置: 首页 > wzjs >正文

长沙做网站湖南微联讯点不错模板网站建设

长沙做网站湖南微联讯点不错,模板网站建设,网站建设的会计分录,优质的常州网站建设Makefile 是一个用于自动化构建过程的脚本文件,主要用于管理源代码的编译和链接过程。它定义了项目中的依赖关系以及如何从源文件生成目标文件。 基本概念 Make:一个构建自动化工具,读取 Makefile 中的指令目标(Target):要生成的…

Makefile 是一个用于自动化构建过程的脚本文件,主要用于管理源代码的编译和链接过程。它定义了项目中的依赖关系以及如何从源文件生成目标文件。

基本概念

  1. Make:一个构建自动化工具,读取 Makefile 中的指令
  2. 目标(Target):要生成的文件或要执行的操作
  3. 依赖(Prerequisites):生成目标所需的文件
  4. 命令(Recipe):生成目标需要执行的命令

基本语法

target: prerequisitesrecipe

简单示例

# 编译一个简单的C程序
hello: hello.cgcc -o hello hello.cclean:rm -f hello

核心特性

1. 变量

CC = gcc
CFLAGS = -Wall -O2hello: hello.c$(CC) $(CFLAGS) -o hello hello.c

2. 自动变量

  • $@ - 目标文件名
  • $< - 第一个依赖文件名
  • $^ - 所有依赖文件
hello: hello.c$(CC) $(CFLAGS) -o $@ $<

3. 模式规则

%.o: %.c$(CC) $(CFLAGS) -c $< -o $@

4. 伪目标

.PHONY: clean
clean:rm -f *.o hello

现代 Makefile 最佳实践

  1. 使用变量:使配置更灵活
  2. 自动依赖生成:使用 -MMD 标志
  3. 并行构建:使用 -j 选项
  4. 目录结构支持:处理子目录

高级示例

# 编译器配置
CC = gcc
CFLAGS = -Wall -Wextra -O2 -MMD
LDFLAGS = 
SRC_DIR = src
OBJ_DIR = obj
BIN_DIR = bin# 源文件和目标文件
SOURCES = $(wildcard $(SRC_DIR)/*.c)
OBJECTS = $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SOURCES))
DEPS = $(OBJECTS:.o=.d)
TARGET = $(BIN_DIR)/app# 默认目标
all: $(TARGET)# 链接可执行文件
$(TARGET): $(OBJECTS)@mkdir -p $(@D)$(CC) $(LDFLAGS) $^ -o $@# 编译源文件
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c@mkdir -p $(@D)$(CC) $(CFLAGS) -c $< -o $@# 清理
.PHONY: clean
clean:rm -rf $(OBJ_DIR) $(BIN_DIR)# 包含自动生成的依赖
-include $(DEPS)

在 macOS 上的注意事项

  1. 默认的 make 是 BSD 版本,有些 GNU 扩展不可用
  2. 安装 GNU make: brew install make,然后使用 gmake
  3. 注意文件系统大小写不敏感

调试 Makefile

  1. 使用 make -n 查看将要执行的命令(不实际执行)
  2. 使用 make --debug 查看详细执行过程
  3. 打印变量值: $(info VAR=$(VAR))

替代工具

虽然 Make 很强大,但对于复杂项目,可以考虑:

  • CMake
  • Bazel
  • Meson
  • Ninja

需要更具体的示例或针对特定语言的 Makefile 吗?



Python 项目中的构建自动化工具

1. 在 Python 项目中使用 Makefile

虽然 Makefile 主要用于编译型语言,但在 Python 项目中依然很有用:

典型 Python Makefile 示例

.PHONY: install test lint clean# 安装依赖
install:pip install -r requirements.txtpip install -r requirements-dev.txt# 运行测试
test:pytest tests/# 代码格式化
format:black .isort .# 静态检查
lint:flake8 .mypy .# 清理构建产物
clean:find . -name '*.pyc' -exec rm -f {} +find . -name '*.pyo' -exec rm -f {} +find . -name '__pycache__' -exec rm -fr {} +rm -rf .mypy_cacherm -rf .pytest_cache

Makefile 在 Python 中的常见用途:

  • 定义常用命令的快捷方式
  • 自动化测试流程
  • 管理开发环境设置
  • 执行代码质量检查
  • 构建发布包

2. Python 专属的类似工具

(1) invoke (PyInvoke)

一个纯 Python 的任务执行工具,比 Makefile 更 Pythonic:

# tasks.py
from invoke import task@task
def test(c):c.run("pytest tests/")@task
def lint(c):c.run("flake8 .")c.run("mypy .")@task
def install(c):c.run("pip install -r requirements.txt")c.run("pip install -r requirements-dev.txt")

使用方式:inv testinv lint

(2) poetry + 自定义脚本

Poetry 的 pyproject.toml 可以定义脚本:

[tool.poetry.scripts]
test = "pytest tests/"
lint = "flake8 . && mypy ."

使用方式:poetry run test

(3) nox

自动化测试矩阵工具,类似 tox 但更灵活:

# noxfile.py
import nox@nox.session(python=["3.8", "3.9", "3.10"])
def tests(session):session.install("-r", "requirements.txt")session.install("pytest")session.run("pytest")

(4) doit

另一个 Python 任务管理工具:

# dodo.py
def task_test():return {'actions': ['pytest tests/'],'file_dep': ['tests/test_example.py']}

3. 现代 Python 项目推荐组合

  1. 简单项目Makefile + pyproject.toml 脚本
  2. 中等项目poetry + invoke/nox
  3. 复杂项目poetry + nox + 少量 Makefile 包装

4. 示例:现代 Python 项目的 Makefile

.PHONY: install test lint format check-quality build publish cleaninstall:poetry installtest:poetry run pytest -v tests/lint:poetry run flake8 .poetry run mypy .format:poetry run black .poetry run isort .check-quality: lint testbuild:poetry buildpublish:poetry publishclean:find . -name '*.pyc' -exec rm -f {} +find . -name '*.pyo' -exec rm -f {} +find . -name '__pycache__' -exec rm -fr {} +rm -rf .mypy_cache .pytest_cache dist build

5. 选择建议

  • 熟悉 Makefile:继续使用,但结合 Python 工具链
  • 纯 Python 环境:优先考虑 invokenox
  • 包管理:使用 poetrypipenv
  • 跨平台兼容性:Python 原生工具比 Makefile 更好
http://www.dtcms.com/wzjs/107616.html

相关文章:

  • 天津做网站推广的网站安徽新站优化
  • 椒江做国际网站的公司seo关键字优化
  • 大连能做网站的公司有百度权重查询工具
  • 关于音乐的个人网站seo搜索引擎实战详解
  • 精品网站制作搜索引擎优化中的步骤包括
  • 做愛黄色视频网站福利南昌百度seo
  • 58同城日照网站建设百度世界排名
  • 网站维护 费用百度不让访问危险网站怎么办
  • 射阳做企业网站多少钱营业推广方案怎么写
  • 24小时看b站直播的软件网站交换链接的常见形式
  • 如何给网站做真实搜索点击重庆seo1
  • 北京最大网站建设公司排名宁波网站推广公司报价
  • 做网站书竞价托管外包费用
  • 杭州的设计网站哪个平台推广效果好
  • 营销型网站设计论文近期新闻热点
  • 莱芜车管所网站手机app推广平台
  • 开发网站服务器百度直播推广
  • 一般的网站都是用什么系统做的泉州seo代理计费
  • 厦门湖里区建设局网站百度网盘搜索引擎
  • 设置网站字体北京seo服务商找行者seo
  • 网站建设中故障分类和排除方法河北seo平台
  • 做像淘宝网的网站营销策略是什么意思
  • h5网站开发流程黄冈网站推广软件费用是多少
  • 怎么做微信上的网站吗句容市网站seo优化排名
  • 安徽国华建设工程项目管理有限公司网站网站排名优化+o+m
  • 株洲网站建设方案咨询百度小说风云榜总榜
  • 食品网站开发的背景网络推广是啥
  • 网站存在风险什么意思全渠道营销
  • 网站建设规划任务书宁波seo怎么做推广渠道
  • wordpress 站内消息杭州推广公司排名