11

私はC++ライブラリ(ヘッダーのセット、インポートライブラリおよびDLL)を構築しています。このライブラリを使いたい開発者にとって、できるだけ簡単に使えるようにしたいと思います。特に、このライブラリの利用者が、プロジェクトのすべての異なる構成(Debug|Releaseおよびx86/x64 / ARM)に対して、ヘッダーパス、ライブラリパス、およびリンクライブラリを手動で変更することを心配する必要はありません。プロパティシートを使用してこれを実行できることを知っています。この目的のために6つの異なるプロパティシートを作成しました(構成ごとに1つ)。各シートは次のようになります(x86 | Debugバージョンのみをリストし、マクロINCLUDEPATHおよびLIBPATHが正しく定義されていると想定します)。

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <_PropertySheetDisplayName>MyCPPLib, 1.0</_PropertySheetDisplayName>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <ClCompile>
      <AdditionalIncludeDirectories>$INCLUDEPATH;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <AdditionalLibraryDirectories>$(AdditionalLibraryDirectories);$LIBPATH\x86\Debug</AdditionalLibraryDirectories>
      <AdditionalDependencies>MyCPPLib.lib;$(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
</Project>

ユーザーのアクティブな構成に基づいて、6つの構成すべてを処理できる単一のpropsファイルを作成できるかどうかを知りたいですか?そのファイルはどのように見えますか?

4

1 に答える 1

7

ライブラリバイナリは、次のような構造でインストールできます。

<toplevelsdkdir>
  |-> lib
       |-> x86
            |-> Debug
            |-> Release
       |-> x64
            |-> Debug
            |-> Release

次に、次のようなプロジェクト全体の小道具ファイルを1つ作成します。

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <_PropertySheetDisplayName>MyCPPLib, 1.0</_PropertySheetDisplayName>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <ClCompile>
      <AdditionalIncludeDirectories>$INCLUDEPATH;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <AdditionalLibraryDirectories>$(AdditionalLibraryDirectories);$LIBPATH\$(PlatformTarget)\$(Configuration)</AdditionalLibraryDirectories>
      <AdditionalDependencies>MyCPPLib.lib;$(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
</Project>

必要に応じて、変数INCLUDEPATHおよびLIBPATHを、レジストリーから読み取った情報(インストール時に配置できる場所)に置き換えることができます。

<ClCompile>
      <AdditionalIncludeDirectories>$([MSBuild]::GetRegistryValue(`HKEY_LOCAL_MACHINE\Software\MyCompany\MySDK\v1`, `InstallDir`))\INCLUDE;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
于 2013-02-21T18:52:54.197 に答える