最近对xmake的操作权限进行了升级,提供更加安全的命令操作,例如:
改进xmake install和xmake uninstall命令,提供更加安全地安装和卸载支持
参考homebrew,禁止在root下运行xmake命令
改进xmake自身的编译安装脚本,不在root下进行build
安全问题1
之前的xmake install和xmake uninstall行为,是自动build后进行安装,而大部分情况下安装目录是在/usr/local目录下。
因此,需要root权限才能写入,那么之前的方式只能暴力地直接加上sudo xmake install来执行。
可想而知,虽然安装确实成功了,但是由于默认的自动构建行为,导致生成
继续阅读 »
Recently, xmake's description syntax has been enhanced to support two different grammar styles at the same time.
The set-add style
The key-val style
The set-add style
This is xmake's classic style, for example:
lua
target("test")
set_kind("static")
add_defines("DEBUG")
add_files("src/*.c", "test/*.cpp")
继续阅读 »
首先我们通过内置的工程模板创建一个空工程:
```bash
$ xmake create -P ./hello
create hello ...
create ok!👌
```
这个时候xmake将会产生一些工程文件,如下:
```bash
$ cd ./hello
$ tree .
.
├── src
│ └── main.c
└── xmake.lua
```
这个简单的程序仅仅只是为了打印输出: hello xmake!
```bash
$ cat ./src/main.c
include
int main(int argc, char** argv)
{
printf("hello xmak
继续阅读 »
task是xmake 2.0开始新增的特性,也是插件开发的核心,在 插件开发之hello xmake 中我们简单介绍了下task的定义和使用
当然task不仅可以用来写插件,而且还可以写一些简单的自定义任务。。
我们先看下一个简单task实现:
```lua
-- 定义一个名叫hello的task任务
task("hello")
-- task运行的入口
on_run(function ()
-- 显示hello xmake!
print("hello xmake!")
end)
```
这是一个最简单的task,相比插件task,它少了对 set
继续阅读 »
import的主要用于导入xmake的扩展类库以及一些自定义的类库模块,一般用于 自定义脚本(on_build, on_run ..)、插件开发、模板开发、平台扩展、自定义任务task等地方。
导入机制如下:
优先从当前脚本目录下导入
再从扩展类库中导入
导入的语法规则:
基于.的类库路径规则,例如:
导入core核心扩展模块
```lua
import("core.base.option")
import("core.project")
import("core.project.task")
import("core")
function main()
-- 获取参数选项
继续阅读 »
如果你看了工程描述入门,那么是否觉得通过 add_files 添加源文件相当的方便?
目前它可以支持.c/.cpp/.s/.S/.m/.mm/.o/.obj/.a/.lib这些后缀的源代码和库文件,其中通配符表示匹配当前目录下文件,而*则匹配多级目录下的文件。
例如:
lua
add_files("src/test_*.c")
add_files("src/xxx/**.cpp")
add_files("src/asm/*.S", "src/objc/**/hello.m")
add_files的使用其实是相当灵活方便的,其匹配模式我借鉴了premake的风格,但是又对其进行了改善和增强。
使得不
继续阅读 »
xmake master上最新版本已经支持vs2002-vs2015工程文件的生成,通过project插件的方式提供,例如:
创建vs2013工程文件:
bash
$ xmake project -k vs2013
默认输出目录是在当前工程的下面,会生成一个vs2008的工程文件夹,打开解决方案编译后,默认的输出文件路径跟xmake.lua描述的是完全一致的,一般都是在build目录下
除非你手动指定其他的构建目录,例如:xmake f -o /tmp/build
创建vs2008工程文件,并且创建工程文件到指定目录:
bash
$ xmake project -k vs2008 f:\vsproject
继续阅读 »
xmake master上最新版本已经支持vs2008工程文件的生成,通过project插件的方式提供,例如:
创建vs2008工程文件:
bash
$ xmake project -k vs2008
默认输出目录是在当前工程的下面,会生成一个vs2008的工程文件夹,打开解决方案编译后,默认的输出文件路径跟xmake.lua描述的是完全一致的,一般都是在build目录下
除非你手动指定其他的构建目录,例如:xmake f -o /tmp/build
创建vs2008工程文件,并且创建工程文件到指定目录:
bash
$ xmake project -k vs2008 f:\vsproject
目前这个插件也是刚刚跑
继续阅读 »
新特性
增加smallest参数配置选项,实现一键配置最小化编译,禁用所有扩展模块和依赖库
增加进程创建和控制接口
改进
增强环境变量设置接口
修改xmake.lua支持最新版xmake v2.x, 简化编译配置
Bugs修复
修复ltimer定时器不准问题
修复asio部分内存泄露问题
修复asio/httpd在linux下keepalive模式,响应很慢问题
修复windows下路径处理的一些bug
继续阅读 »
xmake的add_files接口不仅可以添加源代码文件进行编译,还可以直接添加.o/obj对象文件、以及.a/lib的库文件到编译目标中,这个跟add_links是有区别的
add_links:只能添加链接,例如: -lxxxx 这种,链接的目标也只能是可执行程序、动态库,而且只会链接需要的代码进去
add_files:是直接将静态库中的所有对象文件,解包、重新打包到新的target中,这个target可以是新的静态库,也可以是可执行程序、或者动态库
例如:
```lua
target("test")
-- 生成静态库:libtest.a
set_kind("static")
-- 添
继续阅读 »