CMake Hash в имени файла - PullRequest
       10

CMake Hash в имени файла

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

Когда в моих именах файлов cpp есть хэши / фунты / острые символы (#), я получаю ошибки, подобные

Makefile:22669: warning: overriding recipe for target '.PHONY'
Makefile:22660: warning: ignoring old recipe for target '.PHONY'
Makefile:22678: warning: overriding recipe for target '.PHONY'
Makefile:22669: warning: ignoring old recipe for target '.PHONY'
Makefile:32887: *** missing separator.  Stop.

, хотя сгенерированный Makefile, кажется, имеет длину всего 178 строк. Есть ли способ предотвратить это, кроме использования символа # в именах моих файлов?
Редактировать: кажется, что причиной этой проблемы также являются seimicolons (;)

1 Ответ

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

"#" - это комментарий в make. Почти на 100% уверен, что CMake неправильно экранирует символ "#" при генерации make-файла.

Что касается того, почему вы видите эти номера строк ошибок, CMake генерирует большое количество make-файлов и вызывает их рекурсивно. Тот, который вы видите в «корне», скорее всего, просто make-файл верхнего уровня, который мало что делает. Вам придется искать в подкаталоге CMakeFiles другие make-файлы. Если вы запустите «make VERBOSE = 1» с файлами, сгенерированными CMake, вы сможете следить за вызываемыми подмодами. Кроме того, если вы посмотрите на сообщения «входящих в каталог», создайте отпечатки, вы сможете выяснить, о каком Makefile идет речь.

Однако краткий ответ заключается в том, что вы не сможете использовать специальные имена, такие как "#", "$", пробел, ":" и т. Д. В именах файлов.

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