thpatch / thcrap

Touhou Community Reliant Automatic Patcher
https://www.thpatch.net
The Unlicense
573 stars 42 forks source link

Build with Cmake #39

Closed mokou closed 9 years ago

mokou commented 9 years ago

Step 1 for supporting alternative compilers.

nmlgc commented 9 years ago

This has gone on long enough by now, and I don't want to give into this pressure any longer.

I've been trying to move this project to compile on MinGW using either CMake or qmake so that we can move away from Visual Studio completely and develop and debug the entire project from within Qt Creator. Naturally, qmake would have been the preferred choice since it comes with every Qt bundle for Windows, and win32_utf8 actually did build nicely with it.

However, since all of our dependencies use CMake, wouldn't it be great if we could just generate a superproject and it just builds without requiring any changes to the existing submodules? Well, as it turns out, libpng requires a compiled zlib at, uh, CMake time, not at libpng compile time. To find the path, libpng's CMakeLists.txt does

find_package(ZLIB REQUIRED)

which ends up pulling a random zlib1.dll from my system, then tries to link that statically (yes) into the compiled libpng16.dll, which of course fails. Manually specifying ZLIB_ROOT or setting CMAKE_INCLUDE_PATH and CMAKE_LIBRARY_PATH in CMakeLists.txt? Didn't do a thing.

The CMake integration into Qt Creator is not exactly the best either. Leaving aside the fact that you have to install CMake separately, you don't automatically get Debug and Release build configurations as with qmake, unless you manually create a new build tree and remember to manually mumble the magic -DCMAKE_BUILD_TYPE=Release incantation.

Also, is this some kind of a joke?

At that point, I'm beginning to wonder why we should even change to a build system that is less understood within the active development team to begin with, only to effectively replace our perfectly working build with some auto-generated vomit. Let's look at the arguments brought forth by the CMake proponents:

Therefore, I'm closing this for now. This has sucked out enough time, productivity and momentum. If you still believe that either CMake or qmake would be a sensible choice for this project, go ahead, create a working build, and send a pull request, but I'm not going to waste any more time on this, and neither should anyone else.

kitlith commented 4 years ago

Would it be worth revisiting cmake? Things seem to have changed (at least a little bit) over the last 4 years.

As for the developing on *nix point, the most I can say at this point is that since winedbg exists, I'd guess that it's possible, but I don't have the experience at the moment to be able to say "yes i'd be able to do that."

fwiw I'm willing to work on porting the build system to cmake (by) myself -- I just want to make sure that it's not going to be rejected out of hand.

brliron commented 4 years ago

So I'm not totally against the idea, but I'm not a fan of it.

kitlith commented 4 years ago

Let's see, in order:

In short, I'll dig into my notes and try some things.

kitlith commented 4 years ago

Sorry, this ended up at the bottom of my list, but I went to look it up again because of another project:

https://github.com/roozbehid/dotnet-vcxproj lets you build with GCC using msbuild/the dotnet cmdline tool on linux and other platforms, assuming that the rest of the codebase supports it.

brliron commented 4 years ago

That could work, I'll give it a try eventually

kitlith commented 4 years ago

I had issues with the thing i tried it with that I didn't know how to fix (it wasn't passing GCC any include directories, and it wasn't acknowledging that I was trying to compile a shared library) so I fell back to a quick Makefile. I suppose I should leave some issues on the repo, now that I'm not banging my head against the wall at 2AM.