xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验。

本文主要详细讲解如何创建一个基于xmake的工程以及编译操作。

  • 项目源码
  • 官方文档

创建空工程

xmake提供了xmake create命令,可以很方便的快速创建基于c/c++, swift, objc等各种语言的空工程项目,比如:

$ xmake create test create test ...
[+]: xmake.lua
[+]: src/main.cpp
[+]: .gitignore create ok!

默认会创建一个c++的hello world工程,根目录下会生成一个xmake.lua用于描述项目的构建规则。

add_rules("mode.debug", "mode.release")
target("test") set_kind("binary") add_files("src/*.cpp")

这是一个非常简单的xmake.lua描述,target("test")定义了一个子工程模块test,每个target会生成一个对应的目标文件,此处的binary类型,指定创建一个最基础的可执行文件。

而最上面的mode.debugmode.release规则设置,是可选设置,但是通常我们都会建议加上,这样默认就可以生效两种常用的构建模式:debug和release

执行编译

通常我们如果只是编译当前主机环境的可执行文件,只需要执行xmake这个命令就可以了:

$ xmake
checking for the Xcode directory ... /Applications/Xcode.app
checking for the SDK version of Xcode ... 10.15
[  0%]: ccache compiling.release src/main.cpp
[100%]: linking.release test

xmake默认会检测当前环境已存在的构建环境,比如笔者当前的xcode环境,然后默认采用release模式编译,如果设置了mode.release规则,那么就会生效。

编译模式切换

而如果我们要切到mode.debug编译,只需要:

$ xmake f -m debug
$ xmake

其中,xmake fxmake config命令的简写,用来快速的切换配置,如果上手之后,通常采用简写会更加方便,更多命令的简写,都可执行xmake --help查看。

创建其他模板工程

xmake create还可以用来创建各种其他类型的工程项目,我们可以敲xmake create --help看下:

$ xmake create --help
Usage: $xmake create [options] [target]Create a new project.Options: -l LANGUAGE, --language=LANGUAGE       The project language (default: c++)- c++- go- dlang- cuda- rust- swift- objc- c- objc++-t TEMPLATE, --template=TEMPLATE       Select the project template id or name of the given language. (default: console)- console: c++, go, dlang, cuda, rust, swift, objc, c, objc++- qt.console: c++- qt.quickapp: c++- qt.quickapp_static: c++- qt.shared: c++- qt.static: c++- qt.widgetapp: c++- qt.widgetapp_static: c++- shared: c++, dlang, cuda, c- static: c++, go, dlang, cuda, rust, c- tbox.console: c++, c- tbox.shared: c++, c- tbox.static: c++, ctarget                                 Create the given target.Uses the project name as target if not exists.

从上面的帮助菜单,我们可以大概了解到,可以通过-l/--language来指定工程语言,而-t/--template用来指定闯将的工程模板类型。

比如,我们创建一个基于c的静态库项目:

$ xmake create -l c -t static test
create test ...[+]: xmake.lua[+]: src/interface.c[+]: src/interface.h[+]: src/test.c[+]: src/main.cpp[+]: .gitignore
create ok!

我们也可以创建基于qt的quickapp项目:

$ xmake create -l c++ -t qt.quickapp test
create test ...[+]: xmake.lua[+]: src/interface.c[+]: src/main.qml[+]: src/interface.h[+]: src/test.c[+]: src/main.cpp[+]: src/qml.qrc[+]: .gitignore
create ok!

除了c/c++项目,xmake还支持其他语言的项目编译,但xmake重点还是在c/c++上,支持其他语言也主要是为了支持跟c/c++进行混合编译,毕竟其他语言向rust什么的官方有提供更好的构建方案。

不过我们还是可以使用xmake来尝试编译他们:

$ xmake create -l rust test
create test ...[+]: xmake.lua[+]: src/main.rs[+]: .gitignore
create ok!$ xmake
checking for the architecture ... x86_64
checking for the Xcode directory ... /Applications/Xcode.app
checking for the SDK version of Xcode ... 10.15
[  0%]: linking.release test

qt 创建文件_xmake从入门到精通2:创建和编译工程相关推荐

  1. springtboot 引用子工程的文件_xmake从入门到精通11:如何组织构建大型工程

    xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验. 本文主要详细讲解下,如何通过配置子工程模块,来组织 ...

  2. PyTorch系列入门到精通——模型创建与nn.Module

    PyTorch系列入门到精通--模型创建与nn.Module  

  3. python怎么创建文件夹视频_怎么用python创建文件夹

    Python中创建文件夹的方法:import os def mkdir(path): folder = os.path.exists(path) if not folder:              ...

  4. 《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序

    本节书摘来自异步社区<ASP.NET 开发从入门到精通>一书中的第2章,第2.3节,著 张明星 ,责任编辑 张 涛, 更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  5. 请问苹果x是如何建文件夹_苹果x怎么创建文件夹相关阅读-苹果x怎么创建文件夹文章阅读-123文学网...

    在日常的生活中,我们会把手机相关的APP放在同一个文件夹下.那么苹果手机怎么设置文件夹呢?下面就让afU123小编来告诉大家吧,欢迎阅读. 1.打开苹果手机. 2.一直按着一个软件的图标,知道图标开始 ...

  6. ftp服务器上传创建文件夹权限设置密码,ftp服务器如何创建文件夹权限设置

    ftp服务器如何创建文件夹权限设置 内容精选 换一换 该任务指导用户使用Loader将数据从Hive导出到SFTP服务器.创建或获取该任务中创建Loader作业的业务用户和密码.确保用户已授权访问作业 ...

  7. 创建文件 c语言,汇编语言CreateFile函数:创建新文件或者打开已有文件

    函数 CreateFile 可以创建一个新文件或者打开一个已有文件.如果调用成功,函数返回打开文件的句柄:否则,返回特殊常数 INVALID_HANDLE_VALUEO 原型如下: CreateFil ...

  8. android手机内存创建文件夹,Android在内存问题中创建文件夹

    我在内部存储器中为我的应用程序创建文件夹时遇到了一些问题.我正在使用这段代码: public static void createFoldersInInternalStorage(Context co ...

  9. python创建文件夹名称大全好听_python批量创建指定名称的文件夹

    本文实例为大家分享了python批量创建指定名称的文件夹具体代码,供大家参考,具体内容如下 继删除多余文件之后,做了一些数据处理,需要重新保存数据,但文件夹的名称又不能改 所以只能创建新的文件夹,换个 ...

最新文章

  1. 【逆序对】Ultra - Quicksort
  2. win7下安装linux(centos6.5)双系统详细小白教程
  3. php的VC9-VC14运行库分享以及localhost访问404问题
  4. 手持机设备公司(WINCE/ANDROID/LINUX)
  5. AttributeError : module ‘enum‘ has no attribute ‘IntFlag‘
  6. 一个简单的PHP购物车系统
  7. github上传命令
  8. 大数据分析方法管不管用
  9. java api 8 中文_java8 JDK1.8 API 中文 翻译版 java帮助文档
  10. python发送邮件
  11. Vue3 的 Reactive 响应式到底是什么
  12. Mac 安装 双系统 体验极差的好几天
  13. 柳比歇夫时间管理法 | 让你的时间管理更有效率
  14. windows下如何查看本机所在局域网内所有可以访问的IP
  15. C语言初步学习笔记——第四节 有符号数与常见关键字
  16. 2022年终总结——脚踏实地,勇敢做自己
  17. 刚当部门经理的一点小感悟,定时更新……
  18. ELYFI爱立丰举办“2021中国NFT与餐饮新思路高峰论坛” 圆满成功
  19. 测试游戏cpu和显卡占用软件,什么软件能检测游戏频数和cpu占有率?
  20. golang 设置 http response 响应头与坑

热门文章

  1. 全程干货,requests模块与selenium框架详解
  2. Git安装Windows / Redhat / Ubuntu
  3. Java继承注意事项难点理解
  4. 关于 web.config impersonate 帐号模拟
  5. Python《回车桌面图片》
  6. 漫步微积分三十——定积分的性质
  7. mysql服务器守护程序_MySQL主从服务器的守护进程监视
  8. vue复选框默认被选中_vue .js绑定checkbox并获取、改变选中状态的实例
  9. 深度学习笔记--多层感知器以及BP算法
  10. Gaussian LDA(高斯LDA)简介