基于Xeno的依赖驱动的构建管理器。

bakery-build的Python项目详细描述


#面包店:python构建系统直接从烤箱中出来

bakery是一个依赖驱动的构建系统,位于
[xeno]注入框架(https://github.com/lainpoliant/xeno)之上。bakery
允许您使用简单的python代码定义构建过程的结构和流程。bakery将makefile的表现力与python编程语言的强大功能和实用程序结合起来。

bakery仍处于早期开发阶段。可能有一些粗糙的边缘或主要的
错误。我们鼓励您现在就尝试一下,享受其中的乐趣,但请记住
这是一个活生生的项目,还有很多事情要做!

对于python3 pip,请执行以下操作:

```
$sudo pip install-e.
````

要在pypi上安装最新版本:

```
$sudo pip install bakery build
```


bakery现在可以通过"bake"命令获得:

`````
`$bake
````

project.
这是一个python脚本,通过"bake"命令执行,包含
您的*构建模块*定义。此模块建立构建
项目所需的设置方法、输入、输出、临时资源和目标。


每个目标、输入、输出和临时资源都可以定义为
正常函数或协程。当以这种方式使用协同活动时,bakery会将它们安排在当前事件循环中。使用"asyncio"和内置的
"shell"协程,可以很容易地定义可以运行
多个并发任务的生成工作流,例如编译源文件,并行地。


cx.cFLAGS=[Br/> '-r','Br/> 'STB= C++',
-dLaynEnable StActhTr',
'DLAIN-STACKTraceEnIn描述',
'I/TooBox /Cipe,
'I/包含'Br/> >
CXX.LDFLAGIS= ['-LSDL2',OS
'-lsdl2_image']

@build
class lostlevels:
@provide
def demo_sources(self):
return file.glob('demo/*.cpp')

@provide
def build_dir(self):
return file.directory('build')

@target
def demo_resources(self,构建目录,演示源:
资源路径=[]
演示源中的源:
资源目录=文件.basename(文件.drop_ext(源))+'-rc'
资源路径.append(文件.copy(
文件.join('demo',资源目录),
file.join(build_dir,resource_dir))
返回资源路径

@provide
定义演示对象(self,build_dir,演示资源,演示源:
对象=[]
对于演示源中的源:
对象文件=file.join(build_dir,file.basename(file.swap_ext(source,o')))
对象.append(cxx.compile(source,object_file))
返回对象

@默认值
def demos(self,demo_objects):
返回[cxx.link(obj,file.drop_ext(obj)),用于demo_objects中的obj]

````

使用以下烘焙模式:

-`@build'包装模块,以便烘焙将其作为构建模块进行评估。
可以用'@build'装饰多个模块,但是,其中不能有多个
目标标记为"@default"。

-`@provide'是来自
[xeno]的注释(https://github.com/lainpoliant/python3 xeno),marki将给定的
方法作为可通过其参数名注入其他资源(和
生成目标)的命名资源。

-`@target`是一个烘焙注释,它将方法标记为提供可以使用"bake"命令指定的
目标。

-`@default`将该方法标记为有效的可命名目标,并在没有使用"bake"命令指定其他目标时执行默认目标


定义创建文件的配方。
如果输入文件的修改时间
存在,则将其与输出进行比较,以确定是否需要执行配方。配方通常应返回由配方生成的输出文件的名称。decorator接受以下参数:
-`*args`:表示配方生成的输出的修饰函数的参数名。
-`check`:表示包含
文件名或列表的参数的字符串或字符串列表表示
配方输入的文件名。Bakery使用这些文件的修改时间来确定是否应运行配方。
-`temp`:指包含在配方运行完成后应清除的文件的参数。
修饰函数可以定义注释变量,其中
特殊值注入如下:
-`log`:此参数提供了特定于配方运行的记录器。
请注意,配方可以在生成模块内部或外部定义,此
选项是由您决定。

-`shell`:这是"asyncio.create_subprocess_exec"的协程包装器,它捕获并返回命令的输出,并将其
输出和错误输出打印到面包店记录器。除非程序需要tty,否则在执行编译器等其他程序时最好使用此函数。

*Build modules*in bakery
也是Xeno模块,允许您需要和使用
其他Xeno模块中定义的资源,例如基于Xeno的项目的运行时部分。

-由于上述错误修复,面包店现在依赖于"Xeno>;=3.0.0"。


欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java编辑并重新运行spring引导单元测试,无需重新加载上下文即可加快测试速度   为什么我不能做演员?   java为什么是线程。join通常用于停止安卓中的线程   java从weblogic服务器调用JSON POST REST服务时收到400:错误请求   java在DeviceAdmin模式禁用时设置身份验证?   java SortedMap的keySet()能否始终安全地强制转换到SortedSet?   安卓 java。lang.NoSuchMethodException可包裹类   java JOGL库安装   javatomcat内存管理   java使用getString()中的变量   java将最小星号设置为评级栏   Java中字符串相等的println()方法。。。它到底是如何工作的?   java如何从文本中输出的数组中放入随机图像