Visual Studio Solution-Wide Defines

Visual Studio Solution-Wide Defines

Sometimes it’s useful to have a define that is set on the solution and applied to all projects in that solution. For example, you might have a define for enabling run-time checks which you don’t normally want enabled in a project, but you do want it enabled when the project is included in a test harness solution.

So, assume we have a define called ENABLE_RUNTIME_CHECKS in MyProject which we only want enabled in our project when it is included in our test harness solution.

First, open up MyProject.vcxproj in a text editor and add this line at the end of the <Project> element (just before the </Project> line):

<Import Condition="Exists('$(SolutionDir)\Solution.props')" Project="$(SolutionDir)\Solution.props" />

Do the same for your TestHarness.vcxproj

In the TestHarness folder, create a file called Solution.props with this text:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemDefinitionGroup>
    <ClCompile>
      <PreprocessorDefinitions>ENABLE_RUNTIME_CHECKS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    <</ClCompile>
  </ItemDefinitionGroup>
</Project>


If you only want the define to be set for specific configurations, change this line

<ItemDefinitionGroup Condition="'$(Configuration)'!='Debug'>


You can set any project properties in the Solution.props file. See here for a detailed explanation of Visual Studio props files.

Leave a Reply

Your email address will not be published. Required fields are marked *