Xmake Windows 安装
windows下载 https://github.com/xmake-io/xmake/releases/download/v2.6.8/xmake-master.win64.exe
Xmake 编译Qt
1. 新工程,可以通过创建一个新的示例的空工程.
$ xmake create -t qt.console test
$ xmake create -t qt.static test
$ xmake create -t qt.shared test
$ xmake create -t qt.quickapp test
$ xmake create -t qt.widgetapp test
创建后的工程,需要手工添加 Qt所需的依赖,否则编译不过,如: add_frameworks("widgets")
2. 修改示例工程,添加自己项目所需要的项
add_rules("mode.debug", "mode.release")
target("appname")
set_kind("binary")
add_rules("qt.application")
set_languages("c++17")
add_files("src/*.ui")
add_files("src/*.cpp")
add_files("src/*.h")
add_files("src/*.qrc")
add_frameworks("widgets")
-- 6. Add some frequently-used compilation flags in xmake.lua
--
-- @code
-- -- add debug and release modes
-- add_rules("mode.debug", "mode.release")
--
-- -- add macro defination
-- add_defines("NDEBUG", "_GNU_SOURCE=1")
--
-- -- set warning all as error
-- set_warnings("all", "error")
--
-- -- set language: c99, c++11
-- set_languages("c99", "c++11")
--
-- -- set optimization: none, faster, fastest, smallest
-- set_optimize("fastest")
--
-- -- add include search directories
-- add_includedirs("/usr/include", "/usr/local/include")
--
-- -- add link libraries and search directories
-- add_links("tbox")
-- add_linkdirs("/usr/local/lib", "/usr/lib")
--
-- -- add system link libraries
-- add_syslinks("z", "pthread")
--
-- -- add compilation and link flags
-- add_cxflags("-stdnolib", "-fno-strict-aliasing")
-- add_ldflags("-L/usr/local/lib", "-lpthread", {force = true})
3. xmake 会自动检测 Qt SDK,也可以手工设置 Qt SDK 目录
xmake f --qt=E:\Qt\5.15.2\msvc2019
设置sdk目录xmake f -a x86
设置34位还是64位的 (x86|x64)xmake f -p windows
设置操作系统(win|linux|mac)
$ xmake f -p windows -a x86 --qt=E:\Qt\5.15.2\msvc2019
xmake f -p windows -a x64 --qt=E:\Qt\5.15.2\msvc2019_64
4. 执行 xmake
$ xmake
参考
xmake 安装 https://xmake.io/#/guide/installation
xmake Qt程序示例 https://xmake.io/#/guide/project_examples?id=qt-program
xmake QtCreator 插件 https://github.com/TapzCrew/xmake-project-manager
遇到的错误
- 作为初学者,windows下不要用bash去执行xmake,平台会检测成mingw,检测不到编译器导致报错.