Hi All,
I wanted to start fresh since there are several emails/chats going around
regarding Visual Studio builds of ReactOS.
First, I would like to state something clearly, since there seems to be
implicit thoughts to the contrary:
Visual Studio is capable of handling a project the size of ReactOS in its
entirety in one .sln without any major performance problems, if it is
configured correctly.
The key phrase is "if it is configured correctly".
For example:
1. The performance problem during loading occurs because IntelliSense
is being unnecessarily taxed (quite heavily in fact). This is fixed by
adding #define WIN32_LEAN_AND_MEAN as appropriate to the IDE settings.
2. The lack of x86_64 and ARM support is occurring because there is a
lack of x86_64 and ARM support. :D
3. Some people might look at the Solution Workspace window, see 800
projects, and think, "Wow. That's a lot of projects. I will be scrolling all
day long." There is a solution (no pun intended) for that: Don't put 800
projects linearly in the Solution Workspace. Put them in a hierarchy that
matches, exactly, the hierarchy of the ReactOS project.
4. That build paths will be broken if the user decides to move his/her
ReactOS hierarchy to a different directory after the .sln and .vcxproj files
have been generated by cmake, is easily fixed: Use relative paths in the IDE
project settings instead.
5. The fact that it is not possible to build, say, just applications,
or just drivers, without hunting-and-pecking projects in the Solution
Workspace, is related to problem #3: The projects are not yet placed into a
hierarchy that mirrors the ReactOS repository. If the projects were placed
into a hierarchy that mirrors the ReactOS repository, it would be possible
to select, say, drivers, right-click, select Build, and all the drivers will
be built depends on what was done in the code, as well as setting proper
paths in the IDE. The use would be able to toggle between Debug/Release,
x86_32/ARM, and perform the same operation, with expected results.
I could go on, but you get the point. It is trivial to set up Visual Studio
so that it "behaves properly". I started this effort, and was 10% into the
800 projects, at least setting up the structure, for x86_32, x86_64, and
ARM; but I throttled-back because I do not like redundancy of effort, and
Amine was already well on his way doing something that was essentially
similar. I am confident that, over time, he will solve these problems.
In the meantime, I would hope that we keep in mind that the problem is not
the tool. The problem is that the tool has not been given a chance to be
configured properly.
If we configure it properly, these problems go away, and most importantly,
when a new developer comes and sees ReactOS in Visual Studio for the first
time, what they see makes sense. Let me repeat that: The measure of success
here, is not whether it is possible to get Visual Studio to compile ReactOS,
although I read some writings about how some wanted the Microsoft compiler
over GCC. The measure of success is whether a heavily experience user of
Visual Studio sees the IDE for the first time with ReactOS in it, and not
start mumbling things like.."Ok.uh... why did they do that.???"
By contrast we want them to say:
"Wow.800-project solution. Let's see, x86_32, x86_64, ARM support..nice.both
Debug and Release present.good good.looks like Solution Workspace mirrors
what is on disk..cool.#include paths in IDE project settings are relative to
root of solution so I can move solution to another disk if I like.appreciate
that.IntelliSense seems to be working correctly.and this livecd thing.I
guess right-clicking on that and doing Build does minimum operations
necessary to generate a live CD. I wonder what happens when I try to execute
the livecd project after built. Wow.that is too awesome!!! Ok. Everything
makes sense. I can handle myself from here. Thanks."
IMO, we should give Amine time to get the ReactOS repository into this
state.. I am re-attaching an image I sent last week about what I would have
done for the structure of the Solution Workspace. As you can see from this
structure, there is nothing intimidating or inefficient about this
structure, and it mirrors what ReactOS veterans see on disk every day.
Cheers.
-John
cid:image001.png@01CDEA11.FFD64AF0