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

Ke Gao ke.gao.ut at gmail.com
Fri Sep 21 18:39:36 EDT 2018


It just can't copy to the same source directory.

On Fri, Sep 21, 2018 at 4:32 PM J Decker <d3ck0r at gmail.com> wrote:

>
>
> On Fri, Sep 21, 2018 at 3:29 PM J Decker <d3ck0r at gmail.com> wrote:
>
>>
>>
>> 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
>>
>
> It also wouldn't work if you didn't use
> ${CMAKE_CURRENT_SORUCE_DIR}/../../aaa_file.c in another target.
> (and by the same path... which is partially why I copy into BINARY_DIR,
> then it's in a known place for all projects int he tree
>
>>
>>
>
>>                            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
>>>
>>

-- 
..............................................................................................................................................
Ke Gao
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20180921/1969a24e/attachment.html>


More information about the CMake mailing list