qt 创建文件_xmake从入门到精通2:创建和编译工程
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.debug
和mode.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 f
是xmake 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:创建和编译工程相关推荐
- springtboot 引用子工程的文件_xmake从入门到精通11:如何组织构建大型工程
xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验. 本文主要详细讲解下,如何通过配置子工程模块,来组织 ...
- PyTorch系列入门到精通——模型创建与nn.Module
PyTorch系列入门到精通--模型创建与nn.Module
- python怎么创建文件夹视频_怎么用python创建文件夹
Python中创建文件夹的方法:import os def mkdir(path): folder = os.path.exists(path) if not folder: ...
- 《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序
本节书摘来自异步社区<ASP.NET 开发从入门到精通>一书中的第2章,第2.3节,著 张明星 ,责任编辑 张 涛, 更多章节内容可以访问云栖社区"异步社区"公众号查看 ...
- 请问苹果x是如何建文件夹_苹果x怎么创建文件夹相关阅读-苹果x怎么创建文件夹文章阅读-123文学网...
在日常的生活中,我们会把手机相关的APP放在同一个文件夹下.那么苹果手机怎么设置文件夹呢?下面就让afU123小编来告诉大家吧,欢迎阅读. 1.打开苹果手机. 2.一直按着一个软件的图标,知道图标开始 ...
- ftp服务器上传创建文件夹权限设置密码,ftp服务器如何创建文件夹权限设置
ftp服务器如何创建文件夹权限设置 内容精选 换一换 该任务指导用户使用Loader将数据从Hive导出到SFTP服务器.创建或获取该任务中创建Loader作业的业务用户和密码.确保用户已授权访问作业 ...
- 创建文件 c语言,汇编语言CreateFile函数:创建新文件或者打开已有文件
函数 CreateFile 可以创建一个新文件或者打开一个已有文件.如果调用成功,函数返回打开文件的句柄:否则,返回特殊常数 INVALID_HANDLE_VALUEO 原型如下: CreateFil ...
- android手机内存创建文件夹,Android在内存问题中创建文件夹
我在内部存储器中为我的应用程序创建文件夹时遇到了一些问题.我正在使用这段代码: public static void createFoldersInInternalStorage(Context co ...
- python创建文件夹名称大全好听_python批量创建指定名称的文件夹
本文实例为大家分享了python批量创建指定名称的文件夹具体代码,供大家参考,具体内容如下 继删除多余文件之后,做了一些数据处理,需要重新保存数据,但文件夹的名称又不能改 所以只能创建新的文件夹,换个 ...
最新文章
- 【逆序对】Ultra - Quicksort
- win7下安装linux(centos6.5)双系统详细小白教程
- php的VC9-VC14运行库分享以及localhost访问404问题
- 手持机设备公司(WINCE/ANDROID/LINUX)
- AttributeError : module ‘enum‘ has no attribute ‘IntFlag‘
- 一个简单的PHP购物车系统
- github上传命令
- 大数据分析方法管不管用
- java api 8 中文_java8 JDK1.8 API 中文 翻译版 java帮助文档
- python发送邮件
- Vue3 的 Reactive 响应式到底是什么
- Mac 安装 双系统 体验极差的好几天
- 柳比歇夫时间管理法 | 让你的时间管理更有效率
- windows下如何查看本机所在局域网内所有可以访问的IP
- C语言初步学习笔记——第四节 有符号数与常见关键字
- 2022年终总结——脚踏实地,勇敢做自己
- 刚当部门经理的一点小感悟,定时更新……
- ELYFI爱立丰举办“2021中国NFT与餐饮新思路高峰论坛” 圆满成功
- 测试游戏cpu和显卡占用软件,什么软件能检测游戏频数和cpu占有率?
- golang 设置 http response 响应头与坑