Not sure what I'm doing wrong but the Makefile generated for my project is missing a library from a 'usage' target that the project 'uses'... but only for config=release.
In particular, the release config target in Makefile is missing -lQxtCore and -lQxtGui from the LIBS variable, causing link errors like the following:
obj/Release/mainwindow.o:mainwindow.cpp:(.text$_ZN13Ui_MainWindow13retranslateUiEP11QMainWindow [Ui_MainWindow::retranslateUi(QMainWindow*)]+0x3965): undefined reference to `_imp___ZN8QxtLabel7setTextERK7QString' obj/Release/mainwindow.o:mainwindow.cpp:(.text$_ZN13Ui_MainWindow7setupUiEP11QMainWindow [Ui_MainWindow::setupUi(QMainWindow*)]+0x2799): undefined reference to `_imp___ZN8QxtLabelC1EP7QWidget6QFlagsIN2Qt10WindowTypeEE'
The debug config target in Makefile correctly contains -lQxtCored and -lQxtGuid in the LIBS variable, and so it builds just fine.
Here is the main premake4.lua file for my project:
require "qt-support" solution "ExampleApp" configurations { "Debug", "Release" } include("qwt") include("boost") include("qxt") project "ExampleApp" kind "WindowedApp" uses { "Qt", "Qwt", "Boost", "QxtGui" } language "C++" files { "*.h", "*.cpp", "*.ui", "*.qrc" } configuration "Debug" flags { "Symbols" } configuration "Release" flags { "Optimize" } configuration {}
Notice it includes three premake4.lua files from the qwt, boost and qxt subfolders. The contents of these files are:
qwt:
usage "Qwt" kind "StaticLib" includedirs "include" libdirs "lib" configuration "Debug" links "qwtd5" configuration "Release" links "qwt5" configuration {}
boost:
usage "Boost" kind "StaticLib" includedirs "include" libdirs "lib"
qxt:
usage "QxtCore" kind "StaticLib" includedirs "include/QxtCore" libdirs "lib" configuration "Debug" links "QxtCored" configuration "Release" links "QxtCore" configuration {} usage "QxtGui" kind "StaticLib" includedirs "include/QxtGui" configuration "Debug" links "QxtGuid" configuration "Release" links "QxtGui" configuration {} uses "QxtCore" usage "QxtNetwork" kind "StaticLib" includedirs "include/QxtNetwork" configuration "Debug" links "QxtNetworkd" configuration "Release" links "QxtNetwork" configuration {} uses "QxtCore" usage "QxtSql" kind "StaticLib" includedirs "include/QxtSql" configuration "Debug" links "QxtSqld" configuration "Release" links "QxtSql" configuration {} uses "QxtCore" usage "QxtWeb" kind "StaticLib" includedirs "include/QxtWeb" configuration "Debug" links "QxtWebd" configuration "Release" links "QxtWeb" configuration {} uses "QxtCore"
What am I doing wrong? Many thanks...

Answered my own question: the usages in Qxt's premake4.lua have the same name as the prebuilt lib name, for the release config that is. The debug name differs (the appended 'd') which is why it worked.
'links <name>' tries to find a target named <name> specified somewhere in the premake4.lua/include() structure to link against. If it doesn't find the named target, it'll simply put the lib (as named) in the LIBS var in Makefile. On the other hand, if it finds the named target, it'll do different things depending on whether or not there is a resultant output file. If the named target was a 'project' with 'files' and it built successfully producing an output binary, the lib (as named) would be added to the LIBS var. If there is no resultant file, as is the case for a 'usage' target with no 'files', the requested lib will simply be omitted from the LIBS var.
My solution was to name the usage differently from the pre-existing prebuilt lib file on disk. So this
instead of this
Well, usages were not released and documented yet. Feel free to submit fixes as you go.