2015-06-12 2 views
7

Я чувствую себя почти глупо, чтобы спросить об этом, но я ничего не нашел на этом ...Как я могу указать заданные целевые объекты из командной строки?

Предположим, у меня есть проект cmake, содержащий несколько целей: библиотеки, исполняемые файлы, внешние объекты, .... Как перечислить их с помощью интерфейса командной строки cmake. Я хочу список вещей, которые допустимы для замены $target в следующую командную строку.

cmake . && cmake --build . --target $target 

Лота бонусных баллов за решение, которое не использует ни Grep, ни найти, ни питон, ни Perl, ни ... - Вы получаете идею.

ответ

9

Для Makefile генератора сборки среды можно использовать

cmake.exe --build . --target help 

И есть графическое решение вывода (например, найден here):

cmake.exe . --graphviz=test.graph 
dotty test.graph 

Смотрите также Generating Dependency Graphs with CMake и CMake Graphviz Output Cleaner.

Если вы не установили dotty, вы все равно можете сделать целевые зависимости видны с позволяя GLOBAL_DEPENDS_DEBUG_MODE в вашем CMakeLists.txt:

set_property(GLOBAL PROPERTY GLOBAL_DEPENDS_DEBUG_MODE 1) 

disadavantage здесь является то, что вы не можете запустить его из командной строки , Он всегда будет показывать на stderr при создании среды make.

Ссылки

+0

Ну, было бы неплохо иметь что-то, что является агностиком основного генератора, но делает работу для меня. Мне не очень нравится графическое решение вывода, так как оно требует точечного, которое я считаю хуже, чем perl, grep и bash, потому что оно не входит в стандартную установку любой системы, которую я использую. Я по-прежнему получаю очки за решение на основе make-based. – Holger

+0

Спасибо. Я добавил информацию для использования глобального свойства 'GLOBAL_DEPENDS_DEBUG_MODE'. Это будет работать без «точечного» и даже без опции командной строки «--graphviz». И - потому что раньше у меня также отсутствовало это в CMake - я планирую опубликовать запрос функции для опции командной строки '--list-all-target' на CMAG's tracker. Я буду поддерживать вас здесь, если получаю положительные отзывы. – Florian

+4

Обратите внимание, что '' cmake --build. --target help'' в основном такой же, как '' make help'' – Ignitor

Смежные вопросы