[CMake] CMAKE_INCLUDE_CURRENT_DIR on a function

Tiago Macarios tiagomacarios at gmail.com
Mon Oct 24 18:55:05 EDT 2016


Hi Craig,

Maybe my problem description was lacking. Below is the function I have.
Both CMAKE_INCLUDE_CURRENT_DIR and the target are defined on the same
function scope, but this does not seem to work. I need to define
CMAKE_INCLUDE_CURRENT_DIR on the parent CMakeLists file.

function(AddTest)
    set(options)
    set(oneValueArgs FILE FOLDER)
    set(multiValueArgs LIBRARIES)
    cmake_parse_arguments(TEST
        "${options}"
        "${oneValueArgs}"
        "${multiValueArgs}"
        ${ARGN}
    )

    # THIS DOES NOT WORK HERE I NEED TO SET IT IN THE PARENT FOLDER
    set(CMAKE_INCLUDE_CURRENT_DIR ON)

    get_filename_component(FILE_RAW ${TEST_FILE} NAME_WE)
    add_executable(${FILE_RAW} ${TEST_FILE})

    set_target_properties(${FILE_RAW}
        PROPERTIES
        CXX_STANDARD 14
        CXX_EXTENSIONS OFF
        AUTOMOC ON
        AUTOUIC ON
        FOLDER ${TEST_FOLDER}
    )

    find_package(Qt5Test)
    target_link_libraries(${FILE_RAW} ${TEST_LIBRARIES})

    add_test(NAME ${FILE_RAW} COMMAND ${FILE_RAW})
endfunction()











On Mon, Oct 24, 2016 at 3:48 PM, Craig Scott <craig.scott at crascit.com>
wrote:

> function() introduces a new scope, so if you want changes you make to
> variables inside the function to be visible outside the function, you need
> to use set(... PARENT_SCOPE). Alternatively, a macro() does not introduce a
> new scope, so replacing your function() with a macro() may also yield the
> behaviour you want (but changing to a macro has other effects, so make sure
> you read the docs before going down that path). Also note that setting it
> in one directory does not make it apply to subdirectories as well, in case
> that matters in your situation.
>
>
>
> On Tue, Oct 25, 2016 at 9:42 AM, Tiago Macarios <tiagomacarios at gmail.com>
> wrote:
>
>> Hi,
>>
>> Does CMAKE_INCLUDE_CURRENT_DIR need to be set outside of a function?
>>
>> I have a function where I define an executable "add_executable". This
>> executable uses moc'ed Qt clasees, so I need to set
>> CMAKE_INCLUDE_CURRENT_DIR. It seems like I have to set it from the top
>> level script calling the function. If I set it inside the function the
>> compilation fails with a missing moc file.
>>
>> Any ideas?
>>
>> Tiago
>>
>> --
>>
>> 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
>>
>
>
>
> --
> Craig Scott
> Melbourne, Australia
> https://crascit.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20161024/c7465b1f/attachment.html>


More information about the CMake mailing list