Qt .pro转换为nmake Makefiles无法处理staticlibs,VS2008解决方案同样适用

时间:2010-03-10 14:38:07

标签: qt nmake

我有一个基于Qt .pro文件的构建环境,这些文件转换为Visual Studio 2008解决方案和Makefile(由nmake使用)。大约有30个项目,直到最近全部编译成一个单独的dll(并且主要是一个exe)。

最近我添加了一个配置为静态lib的项目。 Visual Studio将一切都很好地链接。 nmake对从这个静态库中使用的每个符号都有未解析的外部。

Makefile中的项目顺序正常 Qt的依赖关系没问题

使用: Visual Studio 2008 Qt Visual Studio集成1.4.3 Qt 4.5.2

有什么建议吗?所有日志的组合,或任何有用的选择都太大了,不能发布。

1 个答案:

答案 0 :(得分:0)

解析LIBS变量时,对于每个条目-l qmake查看文件是否存在于libpath中。如果它可以找到它,它会添加一个绝对链接到Makefile,如果不是它只是添加文件名并让nmake自己查找。

我有两个条目:-lmystatic和-lmystatic2。我第一次生成Makefile,它写道:

  

LIBS = ... mystatic.lib mystatic2.lib ...

如果我重新生成我的Makefile,它应该写:

  

LIBS = c:\ sandbox \ bin \ mystatic.lib c:\ sandbox \ bin \ mystatic2.lib

相反,它写道:

  

LIBS = c:\ sandbox \ bin \ mystatic2.lib c:\ sandbox \ bin \ mystatic2.lib

我认为发生的是qmake获取与“mystatic”匹配的所有文件的列表,并取得第一个。不幸的是,“mystatic2.lib”也与此匹配,并且“mystatic2.lib”最终在词汇“mystatic.lib”之前结束。

Qt Visual Studio集成完全相同。 VS过滤掉副本,但包含中缺少.lib条目。我无法找出VS能够像这样链接的原因。