[CMake] File(write and add_custom_command

David Cole david.cole at kitware.com
Fri Dec 23 10:10:22 EST 2011


You cannot put a function in CMakeLists.txt and then simply call that
function with add_custom_command.

add_custom_command runs a command line tool. The custom command runs
later at build time. It does not run while cmake is running, it runs
later.

What you can do is write a CMake script file like this:

# begin CallXyz.cmake
function(xyz arg1 arg2 ...)
  ...
endfunction()

xyz("arg1value" "arg2value")
# end CallXyz.cmake

And then use cmake -P like I said in my previous reply.

Is there a problem with hosting this function in its own file? Seems
like a reasonable thing to do to me...


On Fri, Dec 23, 2011 at 10:02 AM,  <norulez at me.com> wrote:
> Thanks,
>
> When i create a function, can i call it with add_custom_command to avoid extra files?
>
> Best Regards
>
> Am 23.12.2011 um 15:29 schrieb David Cole <david.cole at kitware.com>:
>
>> If you need to, pass -D args as well:
>>
>>  add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/output.txt
>>    COMMAND ${CMAKE_COMMAND}
>> -Dfilename=${CMAKE_CURRENT_BINARY_DIR}/output.txt -P
>> ${dir}/filewrite.cmake
>>    DEPENDS ${dir}/filewrite.cmake ${other_files_too_maybe}
>>  )
>>
>>
>> On Fri, Dec 23, 2011 at 9:28 AM, David Cole <david.cole at kitware.com> wrote:
>>> Yes.
>>>
>>> Put it in a *.cmake script file, and then call:
>>>
>>>  add_custom_command(OUTPUT ...
>>>    COMMAND ${CMAKE_COMMAND} -P ${dir}/filewrite.cmake
>>>    DEPENDS ${dir}/filewrite.cmake ${other_files_too_maybe}
>>>  )
>>>
>>> You cannot call it directly from custom command, because it needs a
>>> CMake process around it. If you want to call CMake at build time to
>>> run a -P script, it's quite reasonable to do so.
>>>
>>>
>>> HTH,
>>> David
>>>
>>>
>>> On Fri, Dec 23, 2011 at 9:22 AM,  <norulez at me.com> wrote:
>>>> Hi,
>>>>
>>>> is it possible to use file(write...) for a add_custom_command or add_custom_target?
>>>>
>>>> Thanks in advance
>>>>
>>>> Best Regards
>>>> NuRulez
>>>>
>>>> P.S.: Merry Christmas and a happy new year
>>>> --
>>>>
>>>> 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


More information about the CMake mailing list