[CMake] Getting Location of This File

David Cole DLRdave at aol.com
Sat Jul 25 08:07:56 EDT 2015


I think
http://www.cmake.org/cmake/help/v3.3/variable/CMAKE_CURRENT_LIST_FILE.html
is exactly what you're asking for, and will work in most contexts you're
thinking of. (Configuring from a top level or sub-directory CMakeLists
file, in an included file, running a CMake -P script file...)

The only thing I'd say you should watch out for is using it inside a
function you define. I think it evaluates to the location where the
function is being called from, so in that case, it would NOT be the file
it's defined in (necessarily)... I could be wrong on this point, though, so
you should double check experimentally. Or by analyzing the CMake source.


HTH,
David C.


On Saturday, July 25, 2015, J Decker <d3ck0r at gmail.com> wrote:

>
>
> On Fri, Jul 24, 2015 at 9:30 PM, Daniel Dilts <diltsman at gmail.com
> <javascript:_e(%7B%7D,'cvml','diltsman at gmail.com');>> wrote:
>
>> Yes, ${CMAKE_CURRENT_SOURCE_DIR} has the path to the CMakeLists.txt file
>> that has the include() command.  Is there a variable with the path of the
>> file referenced by the include() command?
>>
> Could define such a variable before the include... then the included file
> could reference that variable?
>
>>
>> On Fri, Jul 24, 2015 at 7:40 PM, J Decker <d3ck0r at gmail.com
>> <javascript:_e(%7B%7D,'cvml','d3ck0r at gmail.com');>> wrote:
>>
>>> ${CMAKE_SOURCE_DIR}  - path of the root cmake file called
>>> ${CMAKE_CURRENT_SOURCE_DIR} - path of the current cmakelists
>>>
>>> On Fri, Jul 24, 2015 at 3:02 PM, Daniel Dilts <diltsman at gmail.com
>>> <javascript:_e(%7B%7D,'cvml','diltsman at gmail.com');>> wrote:
>>>
>>>> I have a set of CMake commands that I want to place in a single file
>>>> and have other projects use it.  The commands in the file must affect the
>>>> scope that references it, so the declared functions, include_directories,
>>>> etc. must affect things in the scope that includes it.
>>>>
>>>> I attempted to place these things in a file and use
>>>> include(filename.cmake) to add the file.  This appears to work until the
>>>> file with the include() is in a different location.
>>>>
>>>> I need the include_directories to be relative to the location of
>>>> filename.cmake, not the CMakeLists.txt that included it.
>>>>
>>>> Is there any way to accomplish this?
>>>>
>>>> --
>>>>
>>>> Powered by www.kitware.com
>>>>
>>>> Please keep messages on-topic and check the CMake FAQ at:
>>>> http://www.cmake.org/Wiki/CMake_FAQ
>>>>
>>>> Kitware offers various services to support the CMake community. For
>>>> more information on each offering, please visit:
>>>>
>>>> CMake Support: http://cmake.org/cmake/help/support.html
>>>> CMake Consulting: http://cmake.org/cmake/help/consulting.html
>>>> CMake Training Courses: http://cmake.org/cmake/help/training.html
>>>>
>>>> Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://public.kitware.com/mailman/listinfo/cmake
>>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20150725/7f324034/attachment.html>


More information about the CMake mailing list