Код ниже взят из файла 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 ""
)





Двойные кавычки служат для экранирования некоторых специальных символов в CMake, в первую очередь точка с запятой. В CMake точка с запятой действует как разделитель аргументов, даже если она создается при раскрытии переменной. В том (маловероятном) случае, когда переменная CMAKE_BINARY_DIR содержит точку с запятой, ${CMAKE_BINARY_DIR}/simpleamqp-src будет рассматриваться как два аргумента, а "${CMAKE_BINARY_DIR}/simpleamqp-src" будет одним аргументом.
Однако, учитывая, что язык CMake несколько неясен и временами эзотеричен, вполне возможно, что объяснение настоящий ближе к «некоторые строки были скопированы из кода, в котором использовались кавычки, а некоторые были написаны кем-то, кто думал, что они [не] необходимы , а также ..."
Чтобы узнать больше о синтаксисе CMake, цитировании и экранировании, вы можете прочитать его документацию, особенно раздел про цитируемые аргументы.
Возможный дубликат cmake: когда заключать переменные в кавычки?