[CMake] How to duplicate a source file and rename it

J Decker d3ck0r at gmail.com
Fri Sep 21 18:29:22 EDT 2018


On Fri, Sep 21, 2018 at 3:24 PM Ke Gao <ke.gao.ut at gmail.com> wrote:

> Thanks. I forgot to say my CMakeList.txt is not located together with the
> source files. So I used the following, it seems not working:
> add_custom_command( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/../../aaa_file.c
>                            DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../../
> file.c
>                            COMMAND ${CMAKE_COMMAND} -E copy_if_different
> ${CMAKE_CURRENT_SOURCE_DIR}/../../file.c
> ${CMAKE_CURRENT_SOURCE_DIR}/../../aaa_file.c
>     )
> Is there an easier way to do this?
>
not really...
NOt sure why it wouldn't work unless current_source_dir isn't what you
think it is.
I actually copy mine into

                           COMMAND ${CMAKE_COMMAND} -E copy_if_different
${SOURCE} ${CMAKE_BINARY_DIR}/${BASENAME}

 (basename is the path part of the ${SOURCE})

>
>
> On Fri, Sep 21, 2018 at 4:10 PM J Decker <d3ck0r at gmail.com> wrote:
>
>>
>>
>> On Fri, Sep 21, 2018 at 3:00 PM Ke Gao <ke.gao.ut at gmail.com> wrote:
>>
>>> Hi,
>>>
>>> In a project, I need to first duplicate a source file and rename it. For
>>> example, I want to change "file.c" to "aaa_file.c", and after compiling, I
>>> will delete it. This is similar to using "cp file.c aaa_file.c". How to
>>> easily do this in CMake? I found "file" command doesn't work well for this.
>>>
>>>
>> add_custom_command( OUTPUT aaa_file.c
>>                            DEPENDS file.c
>>                            COMMAND ${CMAKE_COMMAND} -E copy_if_different
>> file.c aaa_file.c
>>     )
>>
>> then you just have to reference the source file 'aaa_file.c' and it will
>> get updated if file.c is different. I also do
>>                              COMMAND ${CMAKE_COMMAND} -E touch aaa_file.c
>>
>> just to make sure it is new.
>>
>>
>>
>>> Thank you very much.
>>>
>>> --
>>>
>>> ..............................................................................................................................................
>>> Ke Gao
>>> --
>>>
>>> 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:
>>> https://cmake.org/mailman/listinfo/cmake
>>>
>> --
>>
>> 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:
>> https://cmake.org/mailman/listinfo/cmake
>>
>
>
> --
>
> ..............................................................................................................................................
> Ke Gao
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180921/4df74a6e/attachment.html>


More information about the CMake mailing list