2012-02-02 16 views
3

同じ名前で異なる名前空間に2つのクラスがあります。これらのクラスやファイルの名前は変更できません。問題は、qmakeが、フォルダ情報を落としたMakefileを生成することです。したがって、フラットなファイル名でOBJECTSターゲットを作成します。 qmakeはによって生成されたqmake異なる名前空間に同じ名前の2つのクラスのシンボルを重複させる

Makefileは:あなたが見ることができるように

SOURCES  = ../quml/src/lang/Type_.cpp \ 
    ... 
    ../quml/src/uml/Type_.cpp \ 
    ... 

OBJECTS  = Type_.o \ 
    ... 
    Type_.o \ 
    ... 

、非常に異なるフォルダ内の2つの.cppファイルがあります。これは、後で両方のオブジェクトファイルを1つの実行可能ファイルにリンクすることになっています。これは、Type_.oが.cppファイルのうちの1つだけから作成されるため(最後のものが勝つため)、同じファイルを2回取ることで、重複したシンボルが生成され、他のものが欠けています。これは、基本的に同じターゲットに複数の異なるフォルダに同じ名前のソースファイルを2つ持つことはできないということです。

誰も私がこれをどのように解決できるか考えてみませんか?プロ/プリムのトリックやsubdir'ingここで役立つか?

答えて

1

私がこの問題のために見つけたベストソリューションは、各フォルダの.pro(または単純なMakefile)ファイルを作成し、スタティックライブラリとしてコンパイルするか、名前を変更するだけです。

+0

残念ながら、名前を変更することはできません。外部の依存関係が制御できないためです。静的ライブラリオプションを試してみます。 –

関連する問題