我想在构建可执行文件之前修改src/some_file.txt
:
cmake_minimum_required(VERSION 3.5.1)
project(MyProject)
add_custom_target(run ALL
COMMAND sed -i "s@MY_PATH=\\(.*\\)@MY_PATH=${CMAKE_BINARY_DIR}/\\1@" ${CMAKE_CURRENT_SOURCE_DIR}/some_file.txt
)
add_executable(e main.cpp)
add_dependencies(e run)
src / some_file.txt包含内容:
MY_PATH=something
目标run
和e
获得构建但src/some_file.txt
保持不变。为什么呢?
答案 0 :(得分:1)
要么您没有使用GNU sed,要么该文件与该模式不匹配。
我的猜测是你需要再次逃避反斜杠,但无论如何你都不需要它们,只需使用:
sed -i 's@MY_PATH=@MY_PATH=${CMAKE_BINARY_DIR}/@'
或者只是
sed -i 's@MY_PATH=@&${CMAKE_BINARY_DIR}/@'
其中&
扩展为匹配的模式。您应该使用单引号而不是双引号,除非您特别希望shell扩展变量。