我试图实现我自己的模块,用ClangCL工具链在Windows上构建C++,因为目前没有QBS中的内置支持。
我选择使用LLD链接而不是Microsoft链接器,因此我必须手动为它提供所有MS库包含路径。通过这些硬编码路径,我可以很好地构建我的应用程序。但是我想让我的模块更灵活和使用
%LIB%
环境变量设置者
vcvars32.bat
γ
vcvars64.bat
据我所知,这可能(应该?)在模块内部完成
setupBuildEnvironment
脚本。这就是我要读的
%LIB %
失败:
import qbs.Environment
import qbs.Process
Module
{
setupBuildEnvironment:
{
var p = new Process();
p.exec("vcvars64.bat", [], true);
// makes no difference
// p.exec("cmd", ["/c", "vcvars64.bat"], true);
var lib = p.getEnv("LIB");
// this fails too
// var lib = Environment.getEnv("LIB");
console.info("LIB = " + lib);
p.close();
}
...
}
这给了我
LIB =
所以我什么也得不到。我猜在查询变量时,进程已经终止了(
p.getEnv("LIB")
,因此结果为空。QBS文档
Process.getEnv()
在这方面什么也不说。
用什么方法初始化环境?
VCVAS66BAT
更广泛地说,正确的方法是什么?
设置构建环境
?
[更新]
嗯,令人尴尬的是,通过创建一个简单的批处理并除去
设置构建环境
全部脚本:
@echo off
call vcvars64 && qbs
但我希望尽可能避免批处理脚本,所以问题仍然存在。