How to duplicate a source file and rename it

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

How to duplicate a source file and rename it

Ke Gao
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.

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
Reply | Threaded
Open this post in threaded view
|

Re: How to duplicate a source file and rename it

J Decker


On Fri, Sep 21, 2018 at 3:00 PM Ke Gao <[hidden email]> 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
Reply | Threaded
Open this post in threaded view
|

Re: How to duplicate a source file and rename it

Ke Gao
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?


On Fri, Sep 21, 2018 at 4:10 PM J Decker <[hidden email]> wrote:


On Fri, Sep 21, 2018 at 3:00 PM Ke Gao <[hidden email]> 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

--

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
Reply | Threaded
Open this post in threaded view
|

Re: How to duplicate a source file and rename it

J Decker


On Fri, Sep 21, 2018 at 3:24 PM Ke Gao <[hidden email]> 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 <[hidden email]> wrote:


On Fri, Sep 21, 2018 at 3:00 PM Ke Gao <[hidden email]> 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

--

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
Reply | Threaded
Open this post in threaded view
|

Re: How to duplicate a source file and rename it

J Decker


On Fri, Sep 21, 2018 at 3:29 PM J Decker <[hidden email]> wrote:


On Fri, Sep 21, 2018 at 3:24 PM Ke Gao <[hidden email]> 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 <[hidden email]> wrote:


On Fri, Sep 21, 2018 at 3:00 PM Ke Gao <[hidden email]> 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

--

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
Reply | Threaded
Open this post in threaded view
|

Re: How to duplicate a source file and rename it

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

On Fri, Sep 21, 2018 at 4:32 PM J Decker <[hidden email]> wrote:


On Fri, Sep 21, 2018 at 3:29 PM J Decker <[hidden email]> wrote:


On Fri, Sep 21, 2018 at 3:24 PM Ke Gao <[hidden email]> 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 <[hidden email]> wrote:


On Fri, Sep 21, 2018 at 3:00 PM Ke Gao <[hidden email]> 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

--

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