On 25. Aug, 2009, at 15:23, David Ojeda wrote:
On Tue, Aug 25, 2009 at 12:47 PM, Andreas Pakulat <ap...@gmx.de>
wrote:
On 25.08.09 12:37:46, David Ojeda wrote:
I have a shared library that I managed to compile and install using
cmake.
This is working great but now I want to use this library in another
cmake-based development. Normally, as with any other shared
library, I
use a
FindPackage to get the include and linker flags. However, since I am
using
my shared library, I wrote a cmake module. Once again this is
working ok
and
I would like to include this module as a part of the files
installed by
the
library.
So you don't want that, you want it to be either part of cmake or
part of
all projects using that library. The reason is simple, if the
library is
not installed, its find-module won't be installed. Hence upon the
cmake-run
in the project using the lib you'll get a cryptic error message that
library_DIR is not set properly.
Thank you for your response Andreas,
Actually I get a not so cryptic error, which says that it does not
find the
module:
CMake Warning at CMakeLists.txt:12 (find_package):
Could not find module Findmylib.cmake or a configuration file for
package
mylib.
Adjust CMAKE_MODULE_PATH to find Findmylib.cmake or set mylib_DIR
to the
directory containing a CMake configuration file for mylib. The
file will
have one of the following names:
mylibConfig.cmake
mylib-config.cmake
So, to my understanding, cmake will search the module at
CMAKE_MODULE_PATH
or at /usr/share/cmake-2.6/Modules/
Does it also search somewhere else such as:
/usr/local/share/cmake-2.6/Modules ?
I've tried this and apparently it doesn't search there... (maybe it
searches
somewhere
else?)
If cmake does not do this at all... would this be useful? I think so,
personally... since
usually it is common to install libraries/programs at /usr/local/...
You want to read http://www.cmake.org/cmake/help/cmake2.6docs.html#command
:find_package, especially where it starts to talk about "config mode":
CMake constructs a set of possible installation prefixes for the
package. Under each prefix several directories are searched for a
configuration file. The tables below show the directories
searched. Each entry is meant for installation trees following
Windows (W), UNIX (U), or Apple (A) conventions.
<prefix>/ (W)
<prefix>/(cmake|CMake)/ (W)
<prefix>/<name>*/ (W)
<prefix>/<name>*/(cmake|CMake)/ (W)
<prefix>/(share|lib)/cmake/<name>*/ (U)
<prefix>/(share|lib)/<name>*/ (U)
<prefix>/(share|lib)/<name>*/(cmake|CMake)/ (U)
On systems supporting OS X Frameworks and Application Bundles the
following directories are searched for frameworks or bundles
containing a configuration file:
<prefix>/<name>.framework/Resources/ (A)
<prefix>/<name>.framework/Resources/CMake/ (A)
<prefix>/<name>.framework/Versions/*/Resources/ (A)
<prefix>/<name>.framework/Versions/*/Resources/CMake/ (A)
<prefix>/<name>.app/Contents/Resources/ (A)
<prefix>/<name>.app/Contents/Resources/CMake/ (A)
In all cases the <name> is treated as case-insensitive and
corresponds to any of the names specified (<package> or names
given by NAMES). If PATH_SUFFIXES is specified the suffixes are
appended to each (W) or (U) directory entry one-by-one.
Michael
_______________________________________________
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