premake-core
premake-core copied to clipboard
cfg.buildtarget tokens incorrect in postbuildcommands
What seems to be the problem? The various cfg.buildtarget tokens appear to be incorrect in postbuildcommands.
The complete (dummy) project I'm using for learning Premake demonstrates the bug: https://github.com/richard-sim/build-sys-eval/blob/248c0abae20a8509e0d8eb63e435fa3925e3cb06/foobar/src/premake5.lua#L62
postbuildcommands {
"{ECHO} %{prj.name} cfg.buildtarget.directory: %[%{cfg.buildtarget.directory}]",
"{ECHO} %{prj.name} cfg.buildtarget.relpath: %[%{cfg.buildtarget.relpath}]",
"{ECHO} %{prj.name} !cfg.buildtarget.relpath: %[%{!cfg.buildtarget.relpath}]",
"{ECHO} %{prj.name} cfg.buildtarget.abspath: %[%{cfg.buildtarget.abspath}]",
"{ECHO} %{prj.name} !cfg.buildtarget.abspath: %[%{!cfg.buildtarget.abspath}]",
"{ECHO} %{prj.name} cfg.buildtarget.name: %[%{cfg.buildtarget.name}]",
"{ECHO} %{prj.name} cfg.buildtarget.basename: %[%{cfg.buildtarget.basename}]",
"{ECHO} %{prj.name} cfg.buildtarget.extension: %[%{cfg.buildtarget.extension}]"
}
output:
L3a.vcxproj -> D:\dev\build-sys-eval\foobar\src\.build\bin\windows-x86_64-debug\L3a\L3a.exe
L3a cfg.buildtarget.directory: "D:\dev\build-sys-eval\foobar\src\.build\bin\windows-x86_64-debug\L3a\"
L3a cfg.buildtarget.relpath: "..\bin\windows-x86_64-debug\L3a\L3a.exe"
L3a !cfg.buildtarget.relpath: "..\bin\windows-x86_64-debug\L3a\L3a.exe"
L3a cfg.buildtarget.abspath: "..\bin\windows-x86_64-debug\L3a\L3a.exe"
L3a !cfg.buildtarget.abspath: "bin\windows-x86_64-debug\L3a\L3a.exe"
L3a cfg.buildtarget.name: "L3a.exe"
L3a cfg.buildtarget.basename: "L3a"
L3a cfg.buildtarget.extension: "..\.exe"
Partial directory structure:
foobar/
src/
.build/ <-- workspace location
bin/ <-- workspace targetdir
<per-config name>/
L3a/ <-- project's outputs
obj/ <-- workspace objdir
<per-config name>/
L3a/ <-- project's object files
foobar/
L3a/
premake5.lua
premake5.lua
What did you expect to happen?
-
cfg.buildtarget.directory
I'd expect to be relative tofoobar/src/Premake5.lua
as per Premake convention, not absolute. -
cfg.buildtarget.relpath
I'd expect to be relative tofoobar/src/Premake5.lua
, not relative to what seems to befoobar/src/.build/obj/
for some reason?! -
!cfg.buildtarget.relpath
I'd expect to be the absolute path. -
cfg.buildtarget.abspath
I'd also expect to be the absolute path. -
!cfg.buildtarget.abspath
I'd expect to... also be the abs path. -
cfg.buildtarget.extension
I'd expect to be.exe
not..\.exe
. That's quite a unique definition of extension!
What have you tried so far?
I'm using %[%{cfg.buildtarget.directory}%{cfg.buildtarget.basename}.ext]
, which while is an absolute path, is fine for my needs.
How can we reproduce this? This bare-bones repo can be cloned: https://github.com/richard-sim/build-sys-eval/blob/248c0abae20a8509e0d8eb63e435fa3925e3cb06/foobar/src/premake5.lua#L62
- [ x ] Visual Studio 2022 (vs2022)
- [ x ] Other (Please list below) premake-cmake
What version of Premake are you using? Latest master branch.
Anything else we should know? I'm new here. :)