从属项目无法从 Visual Studio 中的引用中的库中看到 headers

Dependent project cannot see headers from a library in refferences in Visual Studio

我正在学习如何制作静态库。我从 windows 和 Visual Studio.

开始

目录结构如下所示:

 - MyLibraryProject
   - include
     - MyLibraryProject
       - MyLibraryHeader.h
   - src
     - MyLibrarySource.cpp
   - build
     - MyLibraryProject.vcxproj
 - MyDependentProject
   - main.cpp
   - MyDependentProject.vcxproj

MyLibraryProject.vcxproj 具有以下设置:

Setting Value
Configuration type Static library (.lib)
Additional Include Directories $(MSBuildThisFileDirectory)../include/MyLibraryProject

MyDependentProject.vcxproj 没有特殊设置,除了我在参考文献上添加了 MyLibraryProject 外,该图像具有我使用的实际名称:

如果我在 main.cpp 中使用相对路径,我可以构建项目 - 静态链接工作正常并且它运行:

#include "../MyLibraryProject/include/MyLibraryProject/MyLibraryHeader.h"

但是,我想像这样包含 headers:

// fatal error C1083: Cannot open include file: 'MyLibraryProject/MyLibraryHeader.h': No such file or directory
#include <MyLibraryProject/MyLibraryHeader.h>

那是行不通的。我也尝试使用 属性 sheet 但也无法正常工作。我一直在互联网上搜索,但通常发现声称如果您添加引用,headers 和静态库都可以工作。

这是full repository,如果你愿意看的话。或在评论中询问是否缺少信息。

项目引用不向依赖项目提供有关 headers 的任何信息。最灵活的方法(在 Visual Studio 中)是 属性 工作表。我创建了一个文件 MyLibraryProject/build/MyLibraryProjectDependency.props:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup />
  <ItemDefinitionGroup>
    <ClCompile>
      <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
  </ItemDefinitionGroup>
  <ItemGroup />
</Project>

然后我将它添加到 Visual Studio 的 属性 资源管理器中的 MyDependentProject.vcxproj。这解决了问题,headers 现在出现在我想要的路径上。