在 visual studio 中包含相对于 props 文件的路径
Include path relative to props file in visual studio
我正在尝试创建 属性 包含路径的文件,以便在我的所有 C++ 项目中使用。
这是存储库结构。
/
/Libs
/Libs2
A.h
B.h
/Sln1
Sln1.sln
Proj1.vcxproj
Sln2.sln
Proj2.vcxproj
Props.props
我想使用 属性 文件 (Props.props) 将以下包含路径添加到两个项目 (C:\\Libs;C:\\Libs\Libs2).
目前我的 属性 文件中有宏:
Name Value
ProjRoot C:\<path to rep root>
我在包含字符串中使用它:$(ProjRoot)\Libs;$(ProjRoot)\Libs\Libs2
此解决方案的问题是宏值中的硬编码绝对路径。如果我的存储库将被克隆到另一个驱动器上,我将不得不手动更改它。
我可以在宏值中使用相对于 属性 文件的路径吗?
即:
Name Value
ProjRoot ./
其中 ./ 将在将使用此 属性 文件的所有项目中解析为 Props.props 文件的路径。
我不能使用 $(SolutionDir) 和 $(ProjectDir),因为可能有不同嵌套级别的解决方案和项目,因此相对于它们的路径将不起作用。
谢谢。
做这个应该手动编辑道具文件并包括以下内容:
<PropSheetPath>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))</PropSheetPath>
这将创建 属性 PropSheetPath
和 属性 文件夹。
在这里找到答案:
只是为了改进以前的答案...这是一个完整的示例(我正在使用一堆小 属性 sheet 以模块化方式添加第三方库).这是添加路径以包含 C++ 编译器的文件夹和链接器的库文件夹以将 CEGUI 库添加到项目中的示例(调试版本,我使用单独的 prop sheet 用于发布)。
<?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">
<PropSheetPath>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))</PropSheetPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Language)'=='C++'">
<CAExcludePath>$(PropsheetPath)..\..\install\windows\Debug\include\cegui-0;$(CAExcludePath)</CAExcludePath>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>CEGUI_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(PropsheetPath)..\..\install\windows\Debug\include\cegui-0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalLibraryDirectories>$(PropsheetPath)..\..\install\windows\Debug\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>DbgHelp.lib;CEGUIBase-0_Static_d.lib;CEGUICommonDialogs-0_Static_d.lib;CEGUICoreWindowRendererSet_Static_d.lib;CEGUIExpatParser_Static_d.lib;CEGUIOpenGLRenderer-0_Static_d.lib;CEGUITGAImageCodec_Static_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>
我正在尝试创建 属性 包含路径的文件,以便在我的所有 C++ 项目中使用。
这是存储库结构。
/
/Libs
/Libs2
A.h
B.h
/Sln1
Sln1.sln
Proj1.vcxproj
Sln2.sln
Proj2.vcxproj
Props.props
我想使用 属性 文件 (Props.props) 将以下包含路径添加到两个项目 (C:\\Libs;C:\\Libs\Libs2).
目前我的 属性 文件中有宏:
Name Value
ProjRoot C:\<path to rep root>
我在包含字符串中使用它:$(ProjRoot)\Libs;$(ProjRoot)\Libs\Libs2
此解决方案的问题是宏值中的硬编码绝对路径。如果我的存储库将被克隆到另一个驱动器上,我将不得不手动更改它。
我可以在宏值中使用相对于 属性 文件的路径吗?
即:
Name Value
ProjRoot ./
其中 ./ 将在将使用此 属性 文件的所有项目中解析为 Props.props 文件的路径。
我不能使用 $(SolutionDir) 和 $(ProjectDir),因为可能有不同嵌套级别的解决方案和项目,因此相对于它们的路径将不起作用。
谢谢。
做这个应该手动编辑道具文件并包括以下内容:
<PropSheetPath>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))</PropSheetPath>
这将创建 属性 PropSheetPath
和 属性 文件夹。
在这里找到答案:
只是为了改进以前的答案...这是一个完整的示例(我正在使用一堆小 属性 sheet 以模块化方式添加第三方库).这是添加路径以包含 C++ 编译器的文件夹和链接器的库文件夹以将 CEGUI 库添加到项目中的示例(调试版本,我使用单独的 prop sheet 用于发布)。
<?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">
<PropSheetPath>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))</PropSheetPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Language)'=='C++'">
<CAExcludePath>$(PropsheetPath)..\..\install\windows\Debug\include\cegui-0;$(CAExcludePath)</CAExcludePath>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>CEGUI_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(PropsheetPath)..\..\install\windows\Debug\include\cegui-0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalLibraryDirectories>$(PropsheetPath)..\..\install\windows\Debug\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>DbgHelp.lib;CEGUIBase-0_Static_d.lib;CEGUICommonDialogs-0_Static_d.lib;CEGUICoreWindowRendererSet_Static_d.lib;CEGUIExpatParser_Static_d.lib;CEGUIOpenGLRenderer-0_Static_d.lib;CEGUITGAImageCodec_Static_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>