最近对xmake.lua的工程描述语法进行了增强,现已可以同时支持两种不同语法风格。
set-add描述风格
key-val描述风格
set-add描述风格
这种是xmake经典的设置风格,例如:
lua
target("test")
set_kind("static")
add_defines("DEBUG")
add_files("src/*.c", "test/*.cpp")
优势:控制灵活,可以根据各种条件,通过if-then进行灵活的条件编译,可以驾驭各种高度复杂的配置需求。
劣势:作用域控制不明显,需要手动规范化缩进
key-val描述风格
这种是xmake最近新加的风格,例如:
l
继续阅读 »
xmake的工程描述文件xmake.lua虽然基于lua语法,但是为了使得更加方便简洁得编写项目构建逻辑,xmake对其进行了一层封装,使得编写xmake.lua不会像些makefile那样繁琐
基本上写个简单的工程构建描述,只需三行就能搞定,例如:
lua
target("test")
set_kind("binary")
add_files("src/*.c")
然后只需要执行编译并且运行它:
bash
$ xmake run test
这对于想要临时写些测试代码来讲,极大地提升了开发效率。。
作用域与工程描述语法
xmake的描述语法是按作用域划分的,主要分为:
外部作用域
内部作用域
继续阅读 »
描述语法
xmake的描述语法基于lua实现,因此描述语法继承了lua的灵活性和简洁性,并且通过28原则,将描述作用域(简单描述)、脚本作用域(复杂描述)进行分离,使得工程更加的简洁直观,可读性非常好。
因为80%的工程,并不需要很复杂的脚本控制逻辑,只需要简单的几行配置描述,就可满足构建需求,基于这个假设,xmake分离作用域,使得80%的xmake.lua文件,只需要这样描述:
lua
target("demo")
set_kind("binary")
add_files("src/*.c")
而仅有的20%的工程,才需要这样描述:
```lua
target("demo")
set_kind
继续阅读 »
概述
此版本重构了整个xmake,使得xmake更加方便地进行多语言扩展,并且在之前原有的构建语言支持上,新增了对golang, dlang 和 rust 程序构建支持。
并且重写了所有文档,提供更加详细完整的接口手册和文档支持:新版文档
License也从之前的LGPLv2.1改为Apache License 2.0,更加详细的改进请看下面详细描述:
新特性
添加--links, --linkdirs and --includedirs 配置参数
添加app2ipa插件
为xmake.lua工程描述增加dictionay语法风格
提供智能扫描编译模式,在无任何xmake.lua等工程描述文件的情况下,也能直接快速编译
为
继续阅读 »
定义
Java注解又称Java标注,是Java语言5.0版本开始支持加入源代码的特殊语法元数据(元数据 Metadata:描述数据的数据)。
Java语言中的类、方法、变量、参数和包等都可以被标注。和Javadoc不同,Java标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java虚拟机可以保留标注内容,在运行时可以获取到标注内容。 当然它也支持自定义Java标注
内置的注解
Java 5 定义了一套注解,共有 7 个,3 个在 java.lang 中,剩下 4 个在 java.lang.annotation 中。
more
作用在代码的注解(java.lang包中)
@Override
继续阅读 »
“程序写出来是给人看的,附带能在机器上运行。”
《计算机程序的结构与解释》卷首语
同构的JSON-Schema(Isomorph-JSON-Schema)是用来描述JSON数据的格式,这种格式最大的特点就是Schema与实际JSON数据的结构完全相同,并且语法简洁,从Schema可以直观的看出实际数据的结构。
继续阅读 »
Markdown发展至今衍生出各种版本,因而并没有统一的标准,本篇博文仅用于在hexo中的配置及使用,记录了Markdown中的一些方法。
一.符号
1.符号转义
描述中需要用到 Markdown 的符号:_ # *在这些符号前加反斜杠
2.显示<>
markdown
输入<和>
more
二、表格
makrdown中的表格和并只能由html代码实现
三、数学
在hexo中支持数学(latex)公式,需要依赖于hexo-math,在站点中的配置文件_config.yml可加入如下配置:
markdown
math:
engine: 'mathjax'
mathjax:
src:
继续阅读 »
Javascript语言的设计不够严谨,很多地方一不小心就会出错。
举例来说,请考虑以下情况。
现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明。用自然语言描述的算法如下:
javascript
if (myObj不存在){
声明myObj;
}
你可能会觉得,写出这段代码很容易。但是实际上,它涉及的语法问题,远比我们想象的复杂。Juriy Zaytsev指出,判断一个Javascript对象是否存在,有超过50种写法。只有对Javascript语言的实现细节非常清楚,才可能分得清它们的区别。
more
第一种写法
根据直觉,你可能觉得可以这样写:
javascript
if (!myObj)
继续阅读 »
正则表达式语法
一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
这里有一些可能会遇到的正则表达式示例:
继续阅读 »
Stylus似乎并不是很有名,以至于很多人不知道它是做什么的,但提到SASS相信有不少人听说过甚至使用过很长时间。其实无论是LESS、SASS还是Stylus甚至是Absurd这些预处理工具,都是对CSS的一种延伸和强化。出现这些工具的原因很简单,CSS本身只是一种描述性质的东西,甚至它不能算是语言而是样式表,所以我们需要一个有条件语句和变量甚至是函数的东西去动态生成CSS代码来达到提高效率和增强可维护性的目的。
本文主要以Stylus语法本身和简单的使用为主要内容,它的目的是介绍和简单指南。将不会过多涉及Javascript的API调用等问题。
介绍
官方的介绍非常简短而精炼:
Expressive, dynamic, r
继续阅读 »