# SimpleMake **Repository Path**: simmerlee_/SimpleMake ## Basic Information - **Project Name**: SimpleMake - **Description**: GNU环境下的C/C++项目构建工具。快来试试吧~ - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-01-09 - **Last Updated**: 2025-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SimpleMake ## 一、简介 `SimpleMake`是一个**简单**、**易用**、**可扩展**的C/C++项目构建工具。特点如下: - **告别复杂冗长**的CMakeList.txt和Makefile! - **极简**的配置文件 - 支持增量构建 - 跨平台:POSIX平台下都可以使用 ## 二、安装 ### 2.1 依赖 - [jsonc](https://pypi.org/project/jsonc-parser/): `pip install jsonc-parser` - [jsonschema](https://pypi.org/project/jsonschema/): `pip install jsonschema` 如果安装失败,可能是由于pip版本过低导致的,请先升级pip:`python3 -m pip install --upgrade pip` ### 2.2 安装 **通用方法:** 下载项目后,不需要安装即可直接使用: ```bash $ python3 Path/To/SimpleMake/src/SimpleMake.py ``` **UNIX/Linux/MacOS**: 下载项目后,进入项目目录,使用`root`权限执行 ``` $ sudo bash install.sh ``` ## 三、用法简介 下面通过一个简单的例子,介绍一下SimpleMake的用法。假设我们需要开发一个网络服务器,名为MyServer,包含3个项目: - `net`:对socket操作进行封装,构建后产出一个静态库。 - `json`:解析json格式的网络消息,构建后产出一个静态库。 - `server`:服务器程序,用于处理网络消息,依赖`net`和`json`,构建后产出一个可执行文件 ### 3.1 项目的目录结构 MyServer |---net | |---inc/... | |---src/... |---json/... |---server/... |---SimpleMake.json - 以"/..."结尾的项,表示没有展开的目录,内部必须包含`src`目录,和`inc`目录(可选) - 项目的目录名称和配置文件中的项目名必须保持一致 - 更多细节请参[用户手册](docs/UserManual.md) ### 3.2 配置文件SimpleMake.json的写法 最简单的情况下,只需描述每个项目的产出类型,以及项目之间的依赖关系即可。 ```jsonc { "projects": { "net": {"type": "lib"}, "json": {"type": "lib"}, "server": {"type": "exe", "dep": ["util", "json"]} } } ``` - 配置文件是带注释的json格式,即`jsonc` - 每个项目必须写明产出类型:`"type"` - 如果有依赖的项目,还需在`"dep"`配置项中说明依赖哪些项目 - 关于更多配置项的详细内容,请参考[用户手册](docs/UserManual.md)第五节 ### 3.3 项目代码中的引用路径 - SimpleMake在编译时,会为自动添加`解决方案目录`和`项目自己的inc目录`作为引用目录 - 引用头文件时: - 引用项目自己的头文件:路径为`xxx.h` - 引用其他项目的头文件:路径为`/inc/xxx.h` ### 3.4 构建与产出 - 在MyServer目录下,直接执行`smake`命令即可构建。 - 关于`smake`命令的参数,可以使用`smake --help`查看,更多详细信息请参考[用户手册](docs/UserManual.md) - 构建成功后生成一个`output`目录,其结构如下: ``` output |---net | |---obj/... | |---libnet.a |---json | |---obj/... | |---libjson.a |---server | |---obj/... | |---server.exe ``` ## 四、更多功能 SimpleMake还有以下实用功能,详情请参考[用户手册](docs/UserManual.md) - 增量构建 - 机器生成代码 - 编译、链接参数 - 自定义构建脚本 后续还会加入依赖远程项目的功能,敬请期待!