To make it less confusing when working with multiple versions of ObjectARX, I recommend removing the ObjectARX SDK folders from your global VC settings, and adding them instead to the project settings for each individual project. Doing so gives you more local control over the project, and makes it less confusing when you need different build configurations to use different versions of ObjectARX in the same project.

I highly recommend setting up system environment variables to point to the locations of various versions of the ObjectARX SDK, as well as different versions of the MFC and C/C++ runtime libraries. This allows your build settings to specify the locations of include and library files using environment variables, thus making your projects much more portable across platforms and directory structures.

For example, I have every version of the ObjectARX SDK since ARX 1.0 installed on my system, and I have an environment variable pointing to the root of every SDK version, as follows:

VariableValueDescription
ARX1E:\SDK\ARX1ARX 1.0 SDK (R13)
ARX2E:\SDK\ARX202ObjectARX 2.02 SDK (R14)
ARX2000E:\SDK\ARX2000ObjectARX 2000 SDK
ARX2000iE:\SDK\ARX2000iObjectARX 2000i SDK
ARX2002E:\SDK\ARX2002ObjectARX 2002 SDK
ARX2004E:\SDK\ARX2004ObjectARX 2004 SDK
ARX2005E:\SDK\ARX2005ObjectARX 2005 SDK
ARX2006E:\SDK\ARX2006ObjectARX 2006 SDK
ARX2007E:\SDK\ARX2007ObjectARX 2007 SDK
ARX2008#32E:\SDK\ARX2008.32ObjectARX 2008 (x86) SDK
ARX2008#64E:\SDK\ARX2008.64ObjectARX 2008 (x64) SDK
ARX2009E:\SDK\ARX2009ObjectARX 2009 SDK
ARX2010E:\SDK\ARX2010ObjectARX 2010 SDK
ARX2013E:\SDK\ARX2013ObjectARX 2013 SDK
ARX2015E:\SDK\ARX2015ObjectARX 2015 SDK

The same thing should be done with other SDK code, including common tool libraries that are designed and maintained internally. In addition to the ObjectARX SDKs, I also have environment variables pointing to each version of Visual C/C++. Those are named MSVC2, MSVC4, MSVC42, MSVC5, MSVC6, MSVC7, MSVC71, MSVC8, MSVC9, MSVC10, and MSVC11, and each environment variable points to the root of the library (i.e. the VC98 folder for VC6, the VC7 folder for VC7, and so on).

Once these environment variables are set up, you can refer to specific folders for specific SDKs in the VC project settings by using the notation $(MSVC6)\Include (to point the VC6 C/C++ runtime include files) or $(MSVC42)\MFC\Lib (for VC4.2 MFC library files). The goal is to completely eliminate hardcoded paths from your project settings, thus making the projects portable. In addition to making the projects portable, this approach makes dependent SDKs portable as well. Moving an SDK to a different location or installing an updated SDK in a new location becomes as simple as changing an environment variable and rebuilding the project.

Assuming environment variables have been set to point to each version of VC, the following strings specify include and library paths for each version of VC:

VersionInclude Path
Library Path
VC 4.2$(MSVC42)\Include;$(MSVC42)\MFC\Include
$(MSVC42)\Lib;$(MSVC42)\MFC\Lib
VC 6$(MSVC6)\Include;$(MSVC6)\MFC\Include;$(MSVC6)\ATL\Include
$(MSVC6)\Lib;$(MSVC6)\MFC\Lib;$(MSVC6)\ATL\Lib
VC 7$(MSVC7)\Include;$(MSVC7)\ATLMFC\Include
$(MSVC7)\Lib;$(MSVC7)\ATLMFC\Lib
VC 7.1$(MSVC71)\Include;$(MSVC71)\ATLMFC\Include
$(MSVC71)\Lib;$(MSVC71)\ATLMFC\Lib
VC 8$(MSVC8)\Include;$(MSVC8)\ATLMFC\Include
x86: $(MSVC8)\Lib;$(MSVC8)\ATLMFC\Lib
x64: $(MSVC8)\Lib\AMD64;$(MSVC8)\ATLMFC\Lib\AMD64
VC 9$(MSVC9)\Include;$(MSVC9)\ATLMFC\Include
x86: $(MSVC9)\Lib;$(MSVC9)\ATLMFC\Lib
x64: $(MSVC9)\Lib\AMD64;$(MSVC9)\ATLMFC\Lib\AMD64
VC 10$(MSVC10)\Include;$(MSVC10)\ATLMFC\Include
x86: $(MSVC10)\Lib;$(MSVC10)\ATLMFC\Lib
x64: $(MSVC10)\Lib\AMD64;$(MSVC10)\ATLMFC\Lib\AMD64
VC 11$(MSVC11)\Include;$(MSVC11)\ATLMFC\Include
x86: $(MSVC11\Lib;$(MSVC11)\ATLMFC\Lib
x64: $(MSVC11)\Lib\AMD64;$(MSVC11)\ATLMFC\Lib\AMD64