Re: [CMake] Source modification using CMake

2017-11-06 Thread Nicholas Yue
Hi Brian,

  Have you consider ExternaProject() ? It has a patching feature.

https://cmake.org/cmake/help/v3.0/module/ExternalProject.html

Cheers

On Mon, 6 Nov 2017 at 07:35 brian heim  wrote:

> Hi list,
>
> Hope you're doing well. I have a question about using CMake to patch the
> source code in a project I work on. This is the situation:
>
> - Project includes C++ transpiled from a different specialized language
> - That transpiler is not cross-platform, so we include transpiled C++ in
> our source tree
> - The generated code does not compile with MSVC 2013 because of a bug
> (specifically
> https://support.microsoft.com/en-us/help/315481/bug-too-many-unnested-loops-incorrectly-causes-a-c1061-compiler-error
> )
> - Vendor of transpiler will not patch for this case, so we need to modify
> the source ourselves
>
> We don't want to _directly_ modify the source because that means we'll
> have to [remember to] do it on a regular basis, when new or updated source
> files are added. The patching is simple enough that it can be done with a
> regex. I am not very experienced with CMake, but I'm aware that two ways of
> modifying source files are:
>
> 1. configure_file(), which doesn't seem to give tools for this purpose.
> 2. file(READ ...) followed by file(WRITE ...). I've gotten my regex to
> work with it, but my attempt overwrites the source file in-place, unlike
> configure_file() which places the modified file in the build tree.
>
> Is there a way to do (2) correctly? By which I mean, can I do a form of
> configure_file() using a regex? Or is there an altogether easier solution
> that's staring me in the face?
>
> Thank you very much in advance for your help,
>
> Brian H
> --
>
> 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
-- 

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

[CMake] Source modification using CMake

2017-11-06 Thread brian heim
Hi list,

Hope you're doing well. I have a question about using CMake to patch the
source code in a project I work on. This is the situation:

- Project includes C++ transpiled from a different specialized language
- That transpiler is not cross-platform, so we include transpiled C++ in
our source tree
- The generated code does not compile with MSVC 2013 because of a bug
(specifically
https://support.microsoft.com/en-us/help/315481/bug-too-many-unnested-loops-incorrectly-causes-a-c1061-compiler-error
)
- Vendor of transpiler will not patch for this case, so we need to modify
the source ourselves

We don't want to _directly_ modify the source because that means we'll have
to [remember to] do it on a regular basis, when new or updated source files
are added. The patching is simple enough that it can be done with a regex.
I am not very experienced with CMake, but I'm aware that two ways of
modifying source files are:

1. configure_file(), which doesn't seem to give tools for this purpose.
2. file(READ ...) followed by file(WRITE ...). I've gotten my regex to work
with it, but my attempt overwrites the source file in-place, unlike
configure_file() which places the modified file in the build tree.

Is there a way to do (2) correctly? By which I mean, can I do a form of
configure_file() using a regex? Or is there an altogether easier solution
that's staring me in the face?

Thank you very much in advance for your help,

Brian H
-- 

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