cmake - что означают двойные кавычки - PullRequest
0 голосов
/ 06 июня 2018

В приведенном ниже коде из файла 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      ""
)

1 Ответ

0 голосов
/ 06 июня 2018

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

Однако, учитывая, что язык CMakeиногда он немного неясен и эзотеричен, вполне возможно, что объяснение real ближе к «некоторые строки были скопированы из кода, который использовал кавычки, а некоторые были написаны кем-то, кто думал, что они [не] необходимыи ... "


Чтобы узнать больше о синтаксисе, цитировании и экранировании CMake, вы можете прочитать его документы, в частности, раздел о аргументах в кавычках .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...