On Thu, Aug 13, 2009 at 4:32 PM, Robert Dailey <rcdai...@gmail.com> wrote:

> In case no one knows this, the Subversion API requires over 10 separate
> dependencies in order to build it into a fully-functional API. In other
> words, there are certain dependencies that are optional, but I'm assuming a
> case where they are all required as far as the Find module is concerned
> (i.e. it can't assume the user won't use certain features and thus is not
> allowed to omit those dependencies from its search). A list of a few that it
> requires:
> apr
> apr-util
> apr-iconv
> neon
> berkeleydb
> openssl
>
> There are many others it depends on. I had considered writing find modules
> for all of these, but there is one major thing stopping me. I do not have
> the knowledge or resources to write find modules for all of these myself. I
> would love more than anything to be able to write find modules for these and
> contribute them to the community. I have no experience with the MAC and no
> development experience with Linux. Only on Windows. Additionally, some of
> these libraries are so tricky to build on Windows that it would be difficult
> to setup a reliable way for the Find module to find these libraries.
>
> What I've been doing is maintaining a fixed list of libraries in my CMake
> scripts and just moving those dependencies in a predictable location so that
> I can "hard-code" the paths to those libraries and includes into my CMake
> projects. What would you guys do in this situation? I obviously could not
> reliably create find modules for these, given the reasons above. But also
> because there is no bold "standard" for find modules. Even when you do know
> what needs to be done to find these libraries, you have to know a standard
> way of setting it up that is acceptable to the CMake project.
>

Nothing is ever easy. :)

Generally what I do is write my find modules to work out of the box on
Linux.  Since nobody wants to find every library/include directory on
Windows manually, generally what we do is to keep dependencies per compiler
in a folder checked into CM.  Then we manipulate CMAKE_PREFIX_PATH to assist
in finding all of the stuff (preserving it's original value so it can still
be used via -D or cache).

Depending on the dependency, we also find some of our Linux dependencies in
the same way.

===
set(DEPS_PATH "" CACHE PATH "Path to the dependencies directory")
set(orig_CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH})

# Wrap calls to each find_package() with the path hint
if(DEPS_PATH AND WIN32)
   list(APPEND CMAKE_PREFIX_PATH ${DEPS_PATH}/foo-1.2.3)
endif()
find_package(Foo)
set(CMAKE_PREFIX_PATH ${orig_CMAKE_PREFIX_PATH})
===


-- 
Philip Lowman
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to