PsichiX / Ptakopysk

C++ game prototyping toolset based on component system
MIT License
14 stars 1 forks source link

Binaries and building #2

Open Xender opened 10 years ago

Xender commented 10 years ago

Hi.

Including compiled binaries in Git repo is in general a very bad idea.

If you look for an easy way of distributing compiled versions, please look at GitHub's "Releases" feature. They allow to include binary files to downloads, without baking them into repo's history.

There are also no instructions for building from source. Nor there is a Makefile (as invoking make is fairly straightforward as long as Makefile doesn't do anything unexpected, providing a Makefile can be considered as an alternative to readme section about building instructions).

Also, does it run only on Windows with GNU tools installed, or is there a way to build a Windows+Visual Studio, GNU/Linux and Mac versions?

PsichiX commented 10 years ago

Thanks for your ideas - for now i've done release feature, next thing that i will do is this building from source description. For now this can be only compiled with Code::Blocks on windows, in future i will provide build scripts for unix and i will add another IDEs to work with Zasuvka.

poxip commented 10 years ago

@PsichiX, use cb2make to generate Makefile from C::B project, example Makefile (main makefile):

cb2make cbproj.cbp -o Makefile.cb
make -f Makefile.cb

Just example, but i think, cmake will be better instead of Makefile.

Xender commented 10 years ago

Okay.

I see that project has both C++ and C# parts. I have no experience with C# on other OS-es, I only know that there is Mono...

As for .cbps, it looks like there's also tool called cbp2mak.

PsichiX commented 10 years ago

ok, so in one of the next versions i will provide makefiles for C++ and C# projects and executing them from makesdk.sh script (i have now all needed tools, thanks guys!) :)

Xender commented 10 years ago

http://www.nooooooooooooooo.com/

Speaking seriously, it looks like it would be better the other way - to put all the things that makesdk.sh script does as .PHONY "install" target in Makefile.

That one one could do good old "make install"

And there are some platform-specific *.dll globs in there (as well as such files for third-party libraries in repo, but I hope that is subject to being cleaned up?). It would be best if those would be handled in a generic way, because even when ported and done cross-platform, having separate if-else's for each platform would be pretty messy. I think that just whole contents of the folder should be copied. It's a matter of having the project hierarchy clean.

PsichiX commented 10 years ago

@Xender: what do you think about making platform-specific submodules for "requerements" folder to keep third-party libraries separated from pure code?

poxip commented 10 years ago

@PsychiX: do not include prebuilt libraries to source.

Xender commented 10 years ago

That's certainly better, but why not just include the binary libraries only in Windows releases? I'd go like this:

As far as I see, Linux people usually compile non-distro-packaged things from source (unless it's Firefox, sth written in Haskell, or similar building PITA :D), so the main need for releases are Windows compiled versions. So for them you can:

As releases are based on particular commits anyway, using either submodule or a separate branch for Windows binary deps could even be necessary for that (I don't know to what degree). Should it be submodule or a branch - hmm...

PsichiX commented 10 years ago

ok, so next weekend i will start to cleanup repo from binaries and prepare it to work with another platforms based on your advices, guys - at first i need to fix bugs and enhance IDE side to work more simple during making tutorials :)