【发布时间】:2018-01-17 23:37:52
【问题描述】:
这是重现问题的最小CMakeLists.txt:
cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
set(BUILD_INFO_CPP "${CMAKE_BINARY_DIR}/build_info.cpp")
add_custom_target(GenerateBuildInfo ALL
COMMAND ${CMAKE_COMMAND} -E echo "#include Something" > "${BUILD_INFO_CPP}"
)
在每次构建时我都想重新生成${CMAKE_BINARY_DIR}/build_info.cpp,
但是这段代码没有创建build_info.cpp,因为cmake 像这样执行它:
/usr/bin/cmake -E echo #include > /tmp/2/build/build_info.cpp
据了解,shell 将 # 解释为 cmets 的开头,因此这相当于
/usr/bin/cmake -E echo
我想知道cmake中没有实现特殊符号转义吗?
我使用 linux/bash 和 Makefile 生成器。
【问题讨论】:
-
你试过
-E echo \"#include Something\" > \"${BUILD_INFO_CPP}\"吗? -
@Pablo 这无济于事,
cmake吃引号。但看起来VERBATIM有效。