我有一个基于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
有什么建议吗?所有日志的组合,或任何有用的选择都太大了,不能发布。
答案 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能够像这样链接的原因。