[CMake] installing a module
Michael Wild
themiwi at gmail.com
Tue Aug 25 09:35:46 EDT 2009
On 25. Aug, 2009, at 15:23, David Ojeda wrote:
> On Tue, Aug 25, 2009 at 12:47 PM, Andreas Pakulat <apaku at 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
More information about the CMake
mailing list