[epiar-devel] CMake build system
eb0s at yahoo.com
Tue Feb 16 11:37:10 PST 2010
We have a system that works well, if someone wants to work on it for educational purposes thats fine but we shouldnt devote too much brain power or time to it.
----- Original Message ----
From: Christopher Thielen <chris at epiar.net>
To: epiar-devel at epiar.net
Sent: Tue, February 16, 2010 11:27:52 AM
Subject: Re: [epiar-devel] CMake build system
I am very much for exploring using CMake. However, I'd like to respond with an autotools defense below:
>> Why do people dislike autotools?
> I have no opinion on autotools as I've never written a script for it. But
> I am prevented from learning it for a couple of reasons
> 1) It does not support native visual studio projects (which I prefer for
> windows programming)
> 2) It fits the unix philosophy well, unfortunately, on windows, to use it,
> you have to know how to use bash, how to install 3rd party libraries in
> the correct location such that they can be found, all things the average
> windows programmer would have to learn.
1) Visual Studio projects are only needed for Windows. No other platform benefits from this, e.g. Linux, OS X, FreeBSD all work very fine with autotools and indeed, it could be argued it is it's standard.
2) I find error with the idea that instead of having Windows folks learn a little UNIX, or maintain some files, all folks from every platform have to learn a little CMake. Seems like more work for everybody instead of a little work for some imo.
Additionally, it should be noted that in the past, the Windows folks have simply maintained their own MSVC workspace files. Trying my best not to be on the free software high horse, but Microsoft quite purposely makes Windows a proprietary platform (in that they made up their own standard), meaning it will not fit with any convention except it's own. Windows programmers have to deal with this as it is symptomatic of their system.
>> How does cmake find libraries? How do I choose the version of the
>> library to use?
> This is a weakness of CMake, since CMake cannot use native autotools
> macros to find library on linux, it resorts to a combination of reading
> system information and making assumptions about where the libraries are
> located. It basically searches a set of predefined paths (as defined by
> the FindPackage script) for the header and library file. As far as I can
> tell, most of these scripts work fine on my linux machine, but most of
> them do not account for library version information.
The autotools macros natively supported by most Unix libraries and indeed, the authors of SDL, libxml2, etc., all have very complex instructions that go beyond simple library searches and handle a lot of errors. It makes perfect sense to let the authors of a library dictate how that library should be detected. We lose this with CMake.
I'd like to make the additional point that CMake is not well known. GNU autotools is a widespread build system with which many people are familiar. With the exception of KDE and a few other notable projects (which very much do not constitute a majority), CMake is not used.
I strongly move that we continue using GNU autotools, and expect Windows programmers using MSVC to maintain their own MSVC workspace files. We could include the workspace files in the repo, although notably there has already been some disagreement about what proper MSVC workspace files are from arke I believe.
That's my two cents.
epiar-devel mailing list
epiar-devel at epiar.net
More information about the epiar-devel