[CMake] How to find the path to the currently include() or find_package file()

David Cole david.cole at kitware.com
Tue Jan 4 07:31:11 EST 2011


On Tue, Jan 4, 2011 at 2:00 AM, Michael Hertling <mhertling at online.de> wrote:
> On 01/04/2011 07:41 AM, Michael Hertling wrote:
>> On 01/04/2011 05:47 AM, John McGehee wrote:
>>> I am using CMake 2.8 on Linux and Windows.
>>>
>>> When I include() or find_package() a .cmake file, is there a variable that I can use within the included .cmake file that will tell me its path?
>>>
>>> For example,
>>>
>>>   # In CMakeLists.txt
>>>   include(somePath/foo.cmake)
>>>
>>> Within somePath/foo.cmake, I want to include bar.cmake which is in the same directory as foo.cmake,
>>>
>>>   # In somePath/foo.cmake
>>>   include(${CMAKE_VARIABLE_THAT_IS_THE_ANSWER_TO_THIS_QUESTION}/bar.cmake)
>>>
>>> where ${CMAKE_VARIABLE_THAT_IS_THE_ANSWER_TO_THIS_QUESTION} = "somePath", the path to foo.cmake, which is currently being evaluated.
>>
>> Use CMAKE_CURRENT_LIST_FILE in conjunction with GET_FILENAME_COMPONENT():
>
> Oops...or just CMAKE_CURRENT_LIST_DIR. ;|
>
> Regards,
>
> 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
>


But make sure to use them at file scope, (and not within a function
definition), and if you use CMAKE_CURRENT_LIST_DIR, understand that it
is only defined in CMake 2.8.3 and later.

HTH,
David


More information about the CMake mailing list