从属项目无法从 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 现在出现在我想要的路径上。
我正在学习如何制作静态库。我从 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 现在出现在我想要的路径上。