0

Visual Studio 2008ソリューションとMakefiles(nmakeで使用)の両方に変換されたQt.proファイルに基づくビルド環境があります。約30のプロジェクトがありますが、最近まですべてが個別のdllにコンパイルされています(メインはexeにコンパイルされています)。

最近、静的ライブラリとして構成されたプロジェクトを追加しました。Visual Studioは、すべてをうまくリンクします。nmakeには、この静的ライブラリから使用されるすべてのシンボルの未解決の外部があります。

MakefileのプロジェクトシーケンスはOKですQtの依存関係はOKです

使用:Visual Studio 2008 Qt Visual Studio Integration 1.4.3 Qt 4.5.2

助言がありますか?結合されたすべてのログ、またはそれらの有用な選択は、投稿するには大きすぎます。

4

1 に答える 1

0

LIBS変数を解析するとき、エントリごとに-l qmakeは、ファイルがlibpathに存在するかどうかを調べます。見つかった場合は、Makefileへの絶対リンクを追加します。そうでない場合は、ファイル名を追加して、nmakeにそれ自体を検索させます。

-lmystaticと-lmystatic2の2つのエントリがありました。Makefileを初めて生成すると、次のように書き込まれます。

LIBS = ... mystatic.libmystatic2.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がこのようにリンクできる理由を私は見つけることができませんでした。

于 2010-03-11T14:10:48.123 に答える