[Scribus] 1.3.5svn compile error on Ubuntu Gutsy

Craig Ringer craig
Sun Feb 17 04:52:59 CET 2008

John B wrote:
> ---snip--
>> When I ran cmake it said it found cairo, python, libxml2, etc... yet at the end it's looking for variables that are only set if the dev libraries are installed. With Craig's advice and with my experience and a little searching on the web I was able to find the solutions. But would it not make more sense to have the cmake script actually look for the dev libraries and output an error if it didn't find them? Then there would of been no question that that was the problem. This isn't a rant, just a suggestion to improve and make it easier for people like me that are generally spoiled by Mac and Windows installer applications ;-)
> That would make sense if all Linux distributions, BSD releases, and
> Mac OS X all separated development headers from executables. As I
> mentioned in response to another thread on this list, Slackware and
> Slackware-based Linux distributions include development headers in
> packages automatically. Maybe the RPM-based and Debian-based Linux
> distributions can take a hint from Slackware and include the
> development headers automatically instead of putting executables and
> development headers into separate packages.
The separation is done for a reason, and it's quite useful. Sometimes a 
package with a relatively small binary can have truly huge headers. If a 
debug version  of the library is also supplied it's even worse, and the 
development files for a package can be tens or hundreds of times the 
size of the runtime files. Tying the developer files and runtime files 
into a single package is rather limiting and IMO a clumsy workaround for 
problems in Linux package management systems.

What I'd like to see would be a way to ask a package management system  
"I have libfred get and install the -dev package. I don't care what it's 
called, you already know that".  I'd also like to be able to trust that 
libfred would ALWAYS be packaged with the name "libfred" (or have an 
alias for that name) in every distro, so I could provide one set of 
instructions instead of ten or more.

> FWIW, CMake is working as designed, in that it didn't find the headers
> in the INCLUDE path until the development packages were installed.
I do find the way it prompts the user in this case unfortunate and 
potentially confusing, though. It's another case where the CMake system 
shows that it's had absolutely no thought given to usability and user 
interface, even though it's technically excellent. The way the 
CMakeCache and ccmake work and the difficulty of writing CMake scripts 
that play well with ccmake and the cache but still respond to 
parameter/environment changes when re-run is another example of the lack 
of thought given to usability and interface.

When I'm writing CMake scripts I try to make sure that I check required 
variables in my code and fail with a more informative error, so the user 
never gets CMake's default error about certain variables being unset. 
This means that the user can't then go in and set them with ccmake if 
they've just installed a hand-built copy somewhere weird, but must 
instead set the CMAKE_INCLUDE_PATH / CMAKE_LIBRARY_PATH to include the 
location of the files. I prefer it personally since it lets me better 
sanity-check everything, provide more useful error messages, and tie 
them in to the documentation better.

Craig Ringer

More information about the scribus mailing list