文章目录
C++源码生成·第二章·构建项目
1 概述
书接上回,在「C++源码生成·第一章·初试模板」中展示了通过复制模板文件进行源码生成的方案,同时也描述了使用模板文件在源码生成工具中的作用,包括:提高代码一致性、减少重复劳动、易于维护和更新、增强可扩展性、促进最佳实践等优点。在本章将继续完善 Python 脚本,通过代替模板中的关键字来发挥模板文件的真正作用,实现源码的真正动态生成功能。
2 创建项目
2.1 命令行接收项目名称
在命令行中接收项目名称作为参数可以自动化项目的创建过程,命令行接口允许用户根据需要输入项目名称,这提供了极大的灵活性。在「Python 处理命令行参数」一文中,展示了在 Python 脚本中如何使用 argparse
模块来处理命令行参数。
在本项目中我们使用 argparse
模块来处理命令行参数,命令行的用法如下:
./cppgen <project_path>
其中的 <project_path>
指项目名称的路径,是必填参数。Python 脚本根据项目路径创建目录,并且使用路径的文件名作为项目名称,比如:./cppgen /path/to/hello
,则项目名称为 hello
。
以下 Python 脚本展示了如何获取命令行中的项目名称:
cppgen
#!/usr/bin/python3
import argparse
def main():
# Create an ArgumentParser object
parser = argparse.ArgumentParser(description="cpp source code generator")
# Add positional arguments
parser.add_argument('project_path', type=str, help='to be generated project path')
# Parse the command-line arguments
args = parser.parse_args()
# Handle args.project_path
print(f"project path: {
args.project_path}")
if __name__ == "__main__":
main()
在以上 Python 脚本中:
- 我们创建了一个
ArgumentParser
对象,并为其提供了描述信息。 - 使用
add_argument()
方法添加了一个参数:project_path
项目路径,这是一个必填参数,必须由用户输入。
- 调用
parse_args()
方法解析命令行参数,并将结果存储在args
对象中。 - 解析后的参数存储在
args.project_path
中,示例中我们将其打印出来。
argparse
模块自动提供了命令行处理方法的帮助信息与错误处理逻辑,可以使用 -h
参数查看:
./cppgen -h
结果显示如下:
usage: cppgen [-h] project_path
cpp source code generator
positional arguments:
project_path to be generated project path
optional arguments:
-h, --