2017-01-11 4 views
0

Все в заголовке, но для получения дополнительной информации: Я создаю библиотеку, где все компоненты независимы (это только потому, что на самом деле проще управлять 1 git репо). В корневой папке этой библиотеки у меня есть 1 подпапка для каждой части компонентов библиотеки, с точно тремя «интересными папками» (src, tests, include/components_name). Я жестко закодировал эти папки в цикле foreach, чтобы все действия выполнялись по умолчанию для всех модулей.где список имен, которые имеют резервы cmake?

Проблема заключается в том, что один из модулей называется «option_parser», который действительно является относительно общим, а также, по-видимому, «зарезервирован» cmake, и тот же для всего, что от него происходит. Я пробовал «option_parser_test», «option_parser_tests» и другие случайные имена на основе корня «option_parser_».

Итак, вот мой вопрос: где я могу научиться избегать имен, которые имеют резервы cmake? И как я могу повлиять на них в любом случае на мои двоичные файлы (потому что мне кажется, что глупо менять название проекта из-за системы сборки. Может быть достаточно сильная причина для его переключения.)

+1

'похоже,« зарезервировано »cmake'. Какая ошибка/предупреждение заставляют вас думать, что модуль' option_parser' зарезервирован? А что вам значит «модуль»? Вы имеете в виду скрипт ' .cmake', который может быть включен в' include () 'command? Или что? – Tsyvarev

+0

Предположим, что мой git repo - это $ HOME/foobar. В нем будут несколько названий папок, например, option_parser, unique_res и dyn_array. Каждый из них является автономной библиотекой, но я хотел бы скомпилировать все (на данный момент) их в один бинарный файл библиотеки (общий или нет, это не важно здесь) через cmake. Их структура всегда одна и та же: ./tests, ./include/$(pwd) и ./src. Поэтому я называю их модулями. Точная ошибка: «Имя цели» ./option_parser «зарезервировано или недействительно для определенных функций CMake, таких как выражения генератора, и может привести к неопределенному поведению». – user3459474

+1

Таким образом, это не имя * модуля * 'option_parser', а ** целевое имя **'./Option_parser', которое зарезервировано, не так ли? Просто не используйте * целевое имя *, которое содержит точку ('.)'. Обычно имя цели должно быть ** идентификатором **, который не содержит знаков препинания и других специальных символов. – Tsyvarev

ответ

0

Это действительно очень просто. Используйте эти три команды, чтобы просмотреть все зарезервированные слова:

cmake --help-command-list 
cmake --help-variable-list 
cmake --help-property-list 
Смежные вопросы