I am currently in the process of following this wiki myself. I am midway through but I thought I might bring some info on my process so far and how it might help the wiki. Also, just my own recommendations.
Note that I am a sort of hybrid newcomer in that I am sometimes just as confused as can be, but I also have some awareness and light know-how of when to dig deeper, use certain tools or use alternatives, etc.Firstly, I'd simply recommend an alternative to direct links to specific versions, or at least saying something akin to "At the time of this writing([date]), the link is: ". Primary confusion right now for me is under
Prerequisites->
wxWidgets, where it says "Download: wxMSW-2.8.12.zip". In my perspective, here are my thoughts when reading:
- Initially, I assume I will be downloading the newest wxWidgets from the official site. Noticing this other download link of an older version makes me question some things though:
-- I see "For more information, go here". Since it is not telling me to go here explicitly, I slightly question the idea of getting the newest version.
-- I see the "Download: wxMSW-#.#.#.zip". As an absolute newcomer I would assume this is the entire wxWidgets, it's everything I need - I would probably download this and move on. However, I've already downloaded the freshest version, and I see this is nowhere near the same filename..
--- I now think: Okay, maybe I just
also need this file..
--- I also think: But... maybe I should find the freshest version of this wxMSW thing..
--- I also think: But... maybe this is an indication that I need
specifically this wxMSW version... will that work with the newer wxWidgets I intend to use?
--- I also think: No wait, perhaps I not only need this older wxMSW, but I need the matching, older wxWidgets. Hmmm...
Ah but wait forgive me, I've skipped the MinGW installation. I have a properly working Code::Blocks already(binary download + mingw. I opted
not to use a nightly build, as I tried that once and it nearly seems more confusing than the process on this page), so the "MinGW Installation" link seems redundant. However, little do I know that the MinGW will be used to build wxWidgets itself! This in itself leads to a few problems, but perhaps this is my fault due to how I went about it:
- I go to download the freshest MinGW. If I was an absolute newcomer, I may accidentally download the old MinGW rather than the one at
https://mingw-w64.org/ - as the old appears prominently first via Google search.
- I see that the "Downloads" page has a "Win-Builds".
I am using Windows, so absolute-newcomer me might have went straight for this. However, I actually see that choice is using much older versions! Thankfully, I not only see "Msys2" has the freshest versions possible, but I've actually used it before(Failed attempt at doing this, or a nightly, years ago
)!
-- As Msys2 seems definitely the best way to go for a Windows user, I take this path...
-- When performing an initial
pacman -Syu as recommended in other guides, I feel things are on the right track!
(Some skipping around here, sorry. Figuring this part out took a while, not sure how to fully explain hehe.)
-- I figure out the TortoiseSVN usage and get the source code easily!
-- I am now trying to build wxWidgets as per the "Installing Code::Blocks from source on Windows" wiki:
--- The "Configure Build Options" section is clear. Perhaps if I was newer I'd be bewildered here, but for me I finally understand sometimes you just gotta edit a text file. (This is actually kinda hard to grasp at first coming from Windows GUI world). I copy and paste the build options I want(just silencing warnings) properly. This section explains things fine.
--- The "Build wxWidgets Library" part causes me pain, but after some time, I realize that Msys2 did not only need
pacman -Syu. When you enter
pacman -F, it says something about MinGW stuff not a part of the database or something.
Without a Google search nor a guide, I realize I must also enter pacman -Fy. Now I can finally build wxWidgets.Anywhoozle, I'm at that point right now so I'll edit or post an update of any other snags I come across. Obviously much of the pain was on the MSYS2 and MinGW side of things. It is also confusing in Msys2 land because it seems to already "have" MinGW, but.. perhaps not the latest unless you explicitly get it? Also, through MSYS2 I noticed I could simply download wxWidgets(
pacman -S mingw-w64-x86_64-wxWidgets), alas it is not clear if this would work out fine with building Code::Blocks, and I've yet to deal with the wxMSW portion so I'm unsure if that also needs a separate download(and if it can be done via MSYS2 since it's starting to feel like quite a nice hub for doing all this stuff).
UPDATE: I now understand that wxMSW is the
windows installer. Well, that clears up that(might edit the above later to remove those mentionings - however the point was kinda how confusing it
looks as a perspective).
It also looks like
mingw-w64-x86_64-toolchain is
the package to get for the installation steps. I seemed to have downloaded a myriad of other packages or something, but this one appears to be the one that even activates the ability to use
mingw32-make. On a related note, online you will find discussions on how mingw32-make and make are... I have no idea actually. Basically, a new user might be told to just use make over mingw32-make, however in MSYS2 this causes it to just hang there, requiring ctrl+C to exit whatever the fudge it's doing(Note: ctrl+C to cancel these things - other than being confusing with copying on Windows - is yet another piece of knowledge an absolute newcomer will likely know nothing about.)
UPDATE2:- Newest development version of wxWidgets BUILT successfully, but building steps from within Code::Blocks failed (popen and pclose not defined). Going to try the link in wiki verison.
- "wxMSW-2.8.12.zip" version failed during build ("loses precision" cast errors). Going to try latest "stable" wxWidgets..
UPDATE3: Nevermind, getting a Nightly Build is far easier! I still refuse to give up on the Self-Hosting option(that's the correct term, right?), but I will use the nightly CodeBlocks to do so next time. I feel I may have to still experiment with the correct MinGW and possibly wxWidgets.