Использует ли cmake соглашение о конфигурации? - PullRequest
4 голосов
/ 19 октября 2011

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

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

Итак, имеет ли cmake некоторые Соглашения по настройке или каждый проект настроеноднозначно?(Относительно макета файла, макета теста, вывода сборки и т. Д.)

Ответы [ 2 ]

2 голосов
/ 02 января 2016

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

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

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

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

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

2 голосов
/ 16 ноября 2011

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

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

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

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

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

...