So, currently CMake assumes that the environment you are working from is correctly configured. I think adding CMakeModule would go beyond the scope of what CMake should be doing. Just like you have to have a working compiler in your path, you should also have a working environment.

However, I am sure the find_* stuff can be further refined, and extra error checks put in place to make sure ABI's match. CMake works best if it can find a full path to a specific library. The idea of a command that turns -L/path -lA into /path/libA.a sounds like a useful thing to add.

So, as to the title of this thread, Cross platform means Windows, OSX, Linux (all distros), HPUX, IRIX, SunOS, Haiku, QNX, cygwin, mingw.

As far as I can tell, the only problem you are talking about here, is when you link to a static library that depends on other static libraries CMake is not figuring out the depend information for you. That information has to come form somewhere. It comes from:

1. pkg-config output, which potentially needs the above command that can turn -L -l into full paths for the libraries.

2. from makefile fragments

3. If it is a cmake project from that package config stuff

4.  Other places I am sure.  There really is no standard for this.

So, I would appreciate constructive feedback on what specific commands and enhancements can be added to CMake in order to make the writing of Find* modules easier to do and get right. I would suggest that the CMake Wiki be used to come up with some ideas. Maybe add a section here:

http://www.vtk.org/Wiki/CMake#More_Topics

Something like
"Proposal for improved commands to better handle third party library dependency information"

If people work on the wiki, please keep the tone of the articles technical. If there are problems, and the solutions make sense I am sure they will make it into CMake at some point.

I would also like to comment on this quote:
"CMake while finding that many modules (most of which I don't
actually care about) are systematically broken in niche environments
which are disproportionately popular on clusters, an important
demographic for my projects."

CMake has been used on many cluster environments by Kitware with ParaView and other software, so the issues you are having are not even widespread in that environment. However, there is always room for improvement. So, if you are serious about helping or other folks want to help with this issue, lets start with a wiki article and see where this goes.

One last thought... The Find* stuff in CMake is hard! Software is installed all over the place, and often times in non-standard locations. That is why there is a cache editor in CMake so if it fails to find the right stuff, you can manually fix it. Also, if anyone knows of a build system that does any of this, we can always copy what that system does. Although, I don't think any of them do much of this stuff...

Thanks.

-Bill
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to