Premake5未按配置输出到指定目录问题求助
解决Premake5
targetdir中%{cfg.buildconfig}不生效的问题 可能的原因与修复方案
1. 检查配置作用域是否正确
确保targetdir配置在项目或配置块内部设置,而非全局作用域或错误层级:
- 错误写法(全局设置无法正确继承配置变量):
targetdir "Build/bin/%{cfg.buildconfig}/" workspace "MyWorkspace" project "MyProject"
- 正确写法(放在项目或配置块内):
workspace "MyWorkspace" project "MyProject" targetdir "Build/bin/%{cfg.buildconfig}/" -- 也可针对不同配置细分 filter "configurations:Debug" targetdir "Build/bin/Debug/" filter "configurations:Release" targetdir "Build/bin/Release/"
2. 调试cfg.buildconfig变量解析情况
通过添加print语句确认变量是否被正确识别:
workspace "MyWorkspace" project "MyProject" print("当前构建配置: %{cfg.buildconfig}") targetdir "Build/bin/%{cfg.buildconfig}/"
运行premake5 gmake2生成Makefile时,查看控制台输出是否能打印出Debug/Release等配置名。如果输出异常,说明配置定义存在问题。
3. 排查是否存在配置覆盖
检查脚本后续是否有其他targetdir设置,或通过filter条件意外覆盖了原路径:
workspace "MyWorkspace" project "MyProject" targetdir "Build/bin/%{cfg.buildconfig}/" -- 后续的系统过滤配置覆盖了原路径 filter "system:linux" targetdir "Build/bin/"
4. 尝试替换变量为cfg.shortname
部分Premake版本中cfg.buildconfig可能存在解析bug,可尝试使用更稳定的cfg.shortname变量(同样返回Debug/Release等配置简称):
targetdir "Build/bin/%{cfg.shortname}/"
5. 更新Premake5到最新稳定版
旧版本Premake可能存在变量解析漏洞,下载最新稳定版后重新生成构建文件测试。
内容的提问来源于stack exchange,提问作者setorano
相关产品推荐
相关产品推荐

