I am working with a large codebase that contains four sets of native C++ VS2013 projects. I'll call these sets A, B, C, and D.
Projects in sets A and B generate C++ static libraries (.lib
). Projects in sets C and D generate DLLs and executables.
Projects in set C link only to static libraries in set A, while projects in set D link to static libraries from both set A and set B:
C (.dll, .exe) ----> A (.lib)
^
|
|
D (.dll, .exe) -----> B (.lib)
I have the following requirements:
- Those DLLs and EXEs that are generated by projects in set C must run on Windows XP as well as on Windows 7;
- Those DLLs and EXEs that are generated by projects in set D, on the other hand, do not need to run on Windows XP.
What I would like to do is to build the projects in sets A and C with the v120_xp
platform toolset, and those in sets B and D with the v120
platform toolset:
(WinXP, Win7)
C [v120_xp] ----> A [v120_xp]
^
|
|
D [v120] -----> B [v120]
(Win7 only)
I believe this should not be a problem for projects in set C, but I'm concerned with projects in set D.
I tried doing the above for a few small projects and it all seems to work correctly, but is this guaranteed to be safe in the general case?
My research:
Point 2) in this question asks pretty much the same thing I'm asking, but for VS2012. It did not receive an answer.
This answer (again, for VS2012) mentions that:
Long story short, mixing modules that were built with a mix of v110 and v110_xp toolsets is not a problem.
This other answer to the same question, on the other hand, says:
Mixing v110_xp executables and v110 libraries is officially unsupported.