C++ Visual Studio预处理器-访问编译器标志
我目前正在将Qt项目从基于.pro文件转换为基于Visual Studio 在原始的.pro文件中,我使用了以下内容C++ Visual Studio预处理器-访问编译器标志,c++,windows,qt,visual-c++,visual-studio-2012,C++,Windows,Qt,Visual C++,Visual Studio 2012,我目前正在将Qt项目从基于.pro文件转换为基于Visual Studio 在原始的.pro文件中,我使用了以下内容 LIBSTR = '\\"$${LIBS}\\"' DEFINES += LIBRARIES=\"$${LIBSTR}\" 这使我可以查看应用程序中使用了哪些库 我想在Visual Studio中复制此功能,但看不到如何执行此操作。1)将configure.h添加到项目中 #pragma once #define LIBRARIES TEXT("") 2) 将$${LIBS}
LIBSTR = '\\"$${LIBS}\\"'
DEFINES += LIBRARIES=\"$${LIBSTR}\"
这使我可以查看应用程序中使用了哪些库
我想在Visual Studio中复制此功能,但看不到如何执行此操作。1)将configure.h
添加到项目中
#pragma once
#define LIBRARIES TEXT("")
2) 将$${LIBS}
添加到项目属性->链接器->输入->其他依赖项
部分
3) 向项目属性->生成事件->预生成事件添加脚本,如:
cscript /nologo configure.js $(ProjectPath) $(ConfigurationName) $(PlatformName)
configure.js:
var proj = WScript.Arguments(0);
var conf = WScript.Arguments(1);
var platf = WScript.Arguments(2);
var configFile = "configure.h";
try {
var doc = new ActiveXObject("msxml2.DOMDocument.6.0");
doc.async = false;
doc.resolveExternals = false;
doc.validateOnParse = false;
doc.load(proj);
var node = doc.selectSingleNode("//Configuration[@Name=\""+conf+"|"+platf+"\"]/Tool[@Name=\"VCLinkerTool\"]");
var attr = node.attributes.getNamedItem("AdditionalDependencies");
var libStr = attr ? attr.value : "";
var fso = new ActiveXObject("Scripting.FileSystemObject");
var aFile = fso.GetFile(".\\" + configFile);
var fStream = aFile.OpenAsTextStream(1);
var re = new RegExp("^\\s*#\\s*define\\s+LIBRARIES\\s+");
var done = false;
var text = "";
while (!fStream.AtEndOfStream) {
var aStr = fStream.ReadLine();
if (!done && re.test(aStr)) {
aStr = "#define LIBRARIES TEXT(\"" + libStr.replace(/(\\|")/g, "\\$1") + "\")";
done = true;
}
text += aStr + "\n";
}
fStream.Close();
fStream = aFile.OpenAsTextStream(2);
fStream.Write(text);
fStream.Close();
} catch (e) {
WScript.Echo("Error:");
WScript.Echo(e.description);
WScript.Quit(1);
}
WScript.Echo("Done");
WScript.Quit(0);
然后,在启动生成之后,configure.h
文件将被更新,并且库将包含您为当前生成配置和平台定义的所有库。将端口连接到QBS,而不是Visual Studio。;-)