2009-05-22 13 views
2

内部.vcproj filesプロジェクトにはすべてのソースファイルのリストがあります。.vcprojで "User Macro"を使用RelativePath

マクロを使用してソースファイルへのパスを指定するにはどうすればよいですか? 我々はこれを行う場合は、次の

<File 
    RelativePath="$(Lib3rdParty)\Qt\qtwinmigrate-2.5-commercial\src\qmfcapp.cpp"> 
</File> 

コンパイラは、フォルダを見つけることができません:あなたが見ることができるように

qmfcapp.cpp 
c1xx : fatal error C1083: Cannot open source file: '.\$(lib3rdparty)\qt\qtwinmigrate- 2.5-commercial\src\qmfcapp.cpp': No such file or directory 

は、私たちのプロジェクトは、QTから複数のソースファイルにコンパイルされます。 QTは外部ライブラリのフォルダ内に存在し、私たちはプロジェクトからそのフォルダへのパスをハードコーディングしたくありません(非常に大きなソリューションがあります)

+0

$(Lib3rdParty)はどこに定義されていますか?それは絶対パスとして定義されているのか、それともプロジェクトファイルに関連していますか? RelativePathをAbsolutePathに変更して、どのような効果があるかを確認してください。 –

+0

私はAbsolutePathが有効であるとは考えていませんでした。これは、Microsoftがプロジェクトファイル用に提供するスキーマにないためです。 –

答えて

1

が適切な相対パススニペットに「Lib3rdParty」の環境変数を設定してみてくださいかかわらず、プロパティ・シートを使用してclunkynessの多くを取り除くことに言及しなければなりません。

+0

+1ここで環境変数をオプションとして考慮していなかったので、ありがとう! –

3

普通の解決策は、サードパーティのインクルード、独自のソースでソース管理するので、ソースとのサードパーティの依存関係の変更を追跡できます。

この場合、各プロジェクトからサードパーティソースファイルへの相対パスを使用できるはずです。

しかし、ソリューションが大きく、プロジェクトが複雑な設定の場合は、ウィンドウ上にのみビルドしていても、CMakeを参照する必要があります。 CMakeでは、共通の設定を1つの場所に指定してビルド環境を記述することができます。より複雑なケースは、変数とマクロで処理できます。次に、この記述からビジュアルスタジオプロジェクトまたはmakefileを生成します。私たちはUNIXポートをサポートするためにそれを導入しましたが、今はWindowsのみの開発にも使用しています。

VSプロジェクトでは、ダイアログボックスを開いたり閉じたりして、デバッグやリリースの設定を行うのは難しいです。各プロジェクトは設定のコピーを持ちますが、他のすべてのプロジェクトとほとんど同じです。

+1

代替ソリューションを提案してくれてありがとう...現時点では、文字通り100以上のアクティブなプロジェクトを持つVisual Studioプロジェクトファイルに多額の投資をしています。プロジェクト間で共有できるプロパティシートを使用して記述した重複した設定の問題を解決します。 –

0

..itは

+0

プロパティシートは本当に貴重です。私たちはそれらを大きく使います。問題のマクロは1つに定義されています。 –

+2

[Add User Macro]ダイアログの[ビルド環境でこのマクロを環境変数として設定する]を試行してください。 VS2008で私のために働いた。 – Amnon

3

別のドライブから既存のファイルを追加すると、絶対パスが使用されていることがわかります。

少なくともv8.00の場合、マクロは展開されていないようです。私はVC、Ant、OSのマクロフォームを試しました。

常にsysinternalsのjunctionオプション、マップされたネットワークパス、またはプロジェクト/グローバルソース、インクルード、およびlibパスにマクロ仕様が設定された.libがあります。 libパッケージを使用しても、ソースに入ることができます。

+0

答えに時間をとってくれてありがとう、そしてStack Overflowへようこそ。) –

関連する問題