Использует ли cmake соглашение по настройке?

Говорят, что Maven использует форму Соглашение важнее конфигурации.

Я не хочу проводить никаких неправильных сравнений, но, насколько я понимаю, cmake может заполнить аналогичный список для проекта C++. как maven может для проекта Java.

Итак, имеет ли cmake какие-то соглашения по настройке, или каждый проект настраивается уникально? (Wrt. макет файла, тестовый макет, вывод сборки и т. д.)


person Martin Ba    schedule 19.10.2011    source источник
comment
На самом деле я ответил на ваш вопрос с точки зрения человека, который знает Maven.   -  person J. M. Becker    schedule 02.01.2016


Ответы (2)


Испытав элегантность Maven 3, я также искал соглашение по системе стиля Maven C конфигурации. ...

Я также проверил CMAKE, после создания скелета выделилось несколько вещей.

  1. CMAKE иногда является декларативным, иногда процедурным, и вы всегда будете получать уродливую смесь. АКА, это ANT для C без скобок.

  2. CMAKE сам по себе является переносимым, увы, ваш проект потребует обработки специфики платформы, и вам лучше знать их заранее. Модули CMAKE существуют, чтобы якобы помочь в этом, но, к сожалению, их повторное использование больше похоже на обещание ролей Ansible... Теоретически возможно, но на практике они оказываются достойным способом организации всей этой сложности.

Другими словами, CMAKE не похож на Maven. Это больше похоже на ANT более низкого уровня, который позволяет вам использовать «кросс-платформенный» DSL для создания make-файлов для конкретной платформы.

person J. M. Becker    schedule 02.01.2016

Одно соглашение, которое мы настоятельно рекомендуем, заключается в том, чтобы выполнять сборки «из исходного кода», где каталог сборки содержит ВСЕ продукты сборки и полностью отделен от дерева исходного кода, обычно исходный код и сборка являются родственными:

projects
  proj1-build-x86
  proj1-build-x64
  proj1-src

Мы всегда рекомендуем эту стратегию по двум основным причинам: (1) сохранить исходное дерево чистым от продуктов сборки, чтобы было легко определить, что изменилось с момента вашего последнего обновления из вашей системы управления версиями, и (2) чтобы у вас могло быть несколько строить деревья для любого исходного дерева и не беспокоиться о том, что продукты сборки и/или настройки из одного мешают другому.

Недавно я заметил, что проект, над которым я работал, непреднамеренно сгенерировал некоторые файлы python в дереве исходного кода. Однако я заметил это только тогда, когда попытался собрать сборки x86 и x64 одновременно в разных деревьях сборки... и вдруг в сгенерированных файлах python некоторые строки были дублированы и смешаны. Изменил его для генерации в дереве сборки, и все было хорошо.

Однако это всего лишь часть хорошей практики CMake, и она не требует строгого соблюдения чего-либо, кроме здравого смысла и дисциплины умных людей, управляющих этими проектами...

person DLRdave    schedule 16.11.2011
comment
Это, конечно, соглашение, но какое отношение оно имеет к соглашению, а не к конфигурации? Cmake автоматически определяет этот тип структуры проекта, чтобы автоматически настроить себя для сборки из исходного кода, или он должен быть явно настроен? - person QuidNovi; 30.08.2012