2 Star 7 Fork 2

lishanwen/lite-manager

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

lite-config

什么是lite-manager?

lite-manager是一个宏配置和管理工具,自动解决C语言项目中宏依赖的问题。

  1. 你是否讨厌过Cmake的管理十分繁杂,并且效率低下?
  2. 你是否因为处理C语言中众多的宏而持续痛苦?
  3. 你是否一直在寻找一个能够有效处理C语言中文件和宏之间的关系的工具?

使用lite-manager吧,让你的C工程项目变得神清气爽!

安装make工具

安装gnu-make之后,然后添加环境变量。

1. 如何使用它, 步骤如下

例程1:hello world

1. 新建一个hello.c源文件,内容如下:
#include <stdio.h>

int main(void)
{
    printf("hello world, lite-manager\n");
    return 0;
}
2. 新建工程管理文件,默认为lm.cfg,例如,我们现在创建一个lm.cfg文件,然后内容如下:
SRC   += hello.c
3. 生成Makefile文件,执行如下命令:
./lm.exe --gen Makefile --project hello

执行完毕后,会在当前目录生成一个Makefile,这个Makefile就是我们编译需要使用的文件

4. 执行make config && make即可编译项目

2. 宏管理

在lm.cfg文件中添加宏,如下所示:

CONFIG_MACRO_A
    choice = 0, 1, 2, 3

CONFIG_MACRO_B
    choice = [0, 100]
    depend = !CONFIG_MACRO_A

上面的CONFIG_MACRO_A可选择的值为0, 1, 2, 3这四个值,CONFIG_MACRO_B可选择的值为0~100,这个宏与CONFIG_MACRO_A互斥,也就是只有CONFIG_MACRO_A关闭时,CONFIG_MACRO_B才可被开启。
对于上面的宏的值,具体设置需要添加proj.cfg文件,该文件类似于Linux中的.config配置文件,这个配置文件将会设置所有宏的值,如果某些值未设置,则会使用choice中第一个值作为缺损值。例如下面proj.cfg

COMPILER = gcc
CONFIG_DEBUG = y
CONFIG_LOG_LEVEL = 0
CONFIG_MEM_POOL_SIZE = 20
CONFIG_MACRO_CACHE_SIZE = 100
CONFIG_TEST = n
CONFIG_MACRO_xxxx = 25

3. 文件管理

有时候我们需要利用宏来控制单个文件是否参与编译,例如当CONFIG_MACRO_A开启时,编译macro_a.c文件,当CONFIG_MACRO_A不开启时,不编译macro_a.c文件,我们可以在lm.cfg文件中这样写:

SRC-$(CONFIG_MACRO_A)    += macro_a.c

4. 层级管理

对于复杂的工程,单个目录已经无法满足要求,这个时候,我们需要建立层级目录,例如下面:

├───build
├───subdirA
|   ├───mac_a.c
|   └───lm.cfg
├───subdirB
|   ├───mac_b.c
|   └───lm.cfg
└───lm.cfg

在最顶层的lm.cfg的内容如下:

CONFIG_MACRO_A
    choice = 0, 1, 2, 3

CONFIG_MACRO_B
    choice = [0, 100]
    depend = !CONFIG_MACRO_A


include "subdirA/lm.cfg"
include "subdirB/lm.cfg"

上面使用include关键字来包含子目录下的lm.cfg文件

5. 添加编译参数

执行lm.exe -d命令即可查看当前支持的所有参数关键字,如下:

lite-manager key: [option] += [value] [value] ...

[option]:
    SRC:                   add c or c++ source files
    SRC-$(CONFIG_XXX):     add c or c++ source files dependent on CONFIG_XXX
    PATH:                  add c or c++ include path
    PATH-$(CONFIG_XXX):    add c or c++ include path dependent on CONFIG_XXX
    DEFINE:                add c or c++ global macro define
    DEFINE-$(CONFIG_XXX):  add c or c++ global macro define dependent on CONFIG_XXX
    ASM:                   add asm source files
    ASM-$(CONFIG_XXX):     add asm source files dependent on CONFIG_XXX
    LDS:                   add build link script file
    LDS-$(CONFIG_XXX):     add build link script file dependent on CONFIG_XXX
    MCFLAG:                add machine build flag
    MCFLAG-$(CONFIG_XXX):  add machine build flag dependent on CONFIG_XXX
    ASFLAG:                add asm build flag
    ASFLAG-$(CONFIG_XXX):  add asm build flag dependent on CONFIG_XXX
    CFLAG:                 add c build flag
    CFLAG-$(CONFIG_XXX):   add c build flag dependent on CONFIG_XXX
    CPPFLAG:               add c++ build flag
    CPPFLAG-$(CONFIG_XXX): add c++ build flag dependent on CONFIG_XXX
    LDFLAG:                add link flag
    LDFLAG-$(CONFIG_XXX):  add link flag dependent on CONFIG_XXX
    LIB:                   add library
    LIB-$(CONFIG_XXX):     add library dependent on CONFIG_XXX
    LIBPATH:               add library path
    LIBPATH-$(CONFIG_XXX): add library path dependent on CONFIG_XXX

    include:               include sub lm.cfg
    include-$(CONFIG_XXX): include sub lm.cfg dependent on CONFIG_XXX

解释如下:
SRC用于添加C/C++源文件,例如SRC += abc.c
PATH用于添加头文件路径,例如PATH += ./表示将当前的目录添加到编译的头文件查找路径中
DEFINE用于添加全局宏,例如DEFINE += STM32F10X_HD表示编译的时候会添加全局宏到编译选项中
ASM用于添加汇编源文件,例如ASM += boot.s
LDS用于添加编译的链接脚本,例如LDS += stm32f10x_64KB_flash.ld
MCFLAG用于添加与机器相关的编译选项
ASFLAG用于添加汇编的编译选项
CFLAG用于添加C源文件的编译选项
CPPFLAG用于添加C++文件的编译选项
LDFLAG用于添加链接的参数,例如LDFLAG += -lnosys -Wl,--cref -Wl,--no-relax -Wl,--gc-sections LIB用于添加链接库文件
LIBPATH用于添加库文件的搜索路径

MIT License Copyright (c) 2024 lishanwen Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

一个轻量级的C项目管理工具 展开 收起
MIT
取消

发行版 (16)

全部

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/li-shan-asked/lite-manager.git
git@gitee.com:li-shan-asked/lite-manager.git
li-shan-asked
lite-manager
lite-manager
noui

搜索帮助