以下代码来自CMakeLists.txt文件。它还构建并安装了一个使用cmake的库。我的问题是BINARY_DIR
和CONFIGURE_COMMAND
之间有什么区别,一个使用双引号而另一个不使用?
ExternalProject_Add(simple_amqp
GIT_REPOSITORY https://github.com/alanxz/SimpleAmqpClient.git
GIT_TAG master
SOURCE_DIR "${CMAKE_BINARY_DIR}/simpleamqp-src"
BINARY_DIR "${CMAKE_BINARY_DIR}/simpleamqp-build"
CONFIGURE_COMMAND ${CMAKE_EXE} ../simpleamqp-src
BUILD_COMMAND ${MAKE_EXE} -j4
INSTALL_COMMAND sudo ${MAKE_EXE} install
TEST_COMMAND ""
)
答案 0 :(得分:1)
双引号用于转义CMake中的某些特殊字符,主要是分号。在CMake中,分号充当参数分隔符,即使它是由变量的扩展产生的。在(不太可能)变量CMAKE_BINARY_DIR
包含分号的情况下,${CMAKE_BINARY_DIR}/simpleamqp-src
将被视为两个参数,而"${CMAKE_BINARY_DIR}/simpleamqp-src"
将是单个参数。
然而,鉴于CMake的语言有时候有点模糊和深奥,真正的解释更接近"某些行是复制的 - 从使用引号的代码中粘贴,有些是由认为[不]要求的人编写的,并且......"
要详细了解CMake语法,引用和转义,您可以阅读其文档,尤其是section about quoted arguments。