Reputation: 113
I'm trying to make a project compile no matter where it is cloned, but I don't know how to write the relative path in relation to the solution location, for now this is how it looks
I tried something with $(SolutionDir) but i don't know how to go one step back from it and into the libraries folder as shown in the current absolute paths. Can someone explain what should i do or show an example ?
Upvotes: 0
Views: 1449
Reputation: 1152
To go one step back from a $(SolutionDir)
you can write $(SolutionDir)\..\
.
You also can go deeper and create a property sheet for your library, so that if you need to use this library in another project, you would need to include only one .prop
-file into your .vcxproj
.
Assuming the library name is cereal
and property sheet is located in libraries
, the .prop
-file would look like this:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)\cereal\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalLibraryDirectories>$(MSBuildThisFileDirectory)\cereal\$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>cereal.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
</Project>
Then to use it in a project, you add this in your .vcxproj
(you can also use gui for this):
<ImportGroup Condition="..." Label="PropertySheets">
...
<Import Project="..\..\..\libraries\cereal.props" />
</ImportGroup>
You can also greatly ease your life by using some package manager, namely vcpkg because of it integration with Visual Studio.
Upvotes: 1