Dear all, I am using external project. I would like to patch a source file. I came out with a cmake script that does the string replacement I'm interested in.
I tested in a standalone project, with the following CMakeLists.txt cmake_minimum_required(VERSION 3.4) project(patching_string) file (STRINGS TestData.py testdata NEWLINE_CONSUME) string(REPLACE "sys.prefix" "os.environ[\'SIRF_INSTALL_PATH\']" patched ${testdata}) file( WRITE ${CMAKE_CURRENT_SOURCE_DIR}/TestData.py ${patched} ) and as a matter of facts this does the string replacement I'm interested in. Good, now I would like to use this to the project I'm really interested in which uses the ExternalProject_Add machinery. I added the patch step: <code> file (WRITE ${CMAKE_BINARY_DIR}/patch_script.cmake " file (STRINGS ${${proj}_SOURCE_DIR}/Wrappers/Python/ccpi/framework/TestData.py testdata NEWLINE_CONSUME) string(REPLACE \"sys.prefix\" \"os.environ[\\\'SIRF_INSTALL_PATH\\\']\" patched \${testdata}) file( WRITE ${${proj}_SOURCE_DIR}/Wrappers/Python/ccpi/framework/TestData.py \${patched} ) ") ExternalProject_Add( ... PATCH_COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/patch_script.cmake ... ) </code> Notice that I write the patch_script.cmake before the ExternalProject_Add Now, all of this WORKS. Or at least I get the patch_script.cmake file in the proper directoty, with the content I want. However, execution with cmake -P patch_script.cmake doesn't work as expected. I get CMake Error at build/patch_script.cmake:3 (string): string sub-command REPLACE requires at least four arguments. Given that the patch_script.cmake has the same content of the standalone CMakeLists.txt above (without the first 2 lines), I don't know where things don't go well, except that I execute the script with cmake -P cmake version 3.15.2 Thanks for any help. Edo -- Edo I know you think you understand what you thought I said, but I'm not sure you realize that what you heard is not what I meant (prob. Alan Greenspan) :wq
-- 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