Добавление дополнительных целей make / test в проект autotools - PullRequest
5 голосов
/ 30 сентября 2009

У нас есть проект autotools, в котором есть комплексные и интеграционные тесты, каждый из которых выполняется с помощью команды 'make check'. Это не идеально, поскольку некоторые интеграционные тесты занимают некоторое время и имеют все виды зависимостей (база данных и т. Д.)

Я бы хотел разделить интеграционные тесты и назначить им собственную цель make. Таким образом, модульные тесты все еще можно часто запускать (с помощью make-проверки), а интеграционные тесты можно запускать при необходимости аналогичным образом.

Есть ли простой (или иным образом) способ добавить дополнительную цель создания?

ПРИМЕЧАНИЕ: Я, вероятно, также должен добавить, что это большой проект, поэтому редактирование / ведение каждого make-файла вручную нежелательно. Я хотел бы сделать это «способом autotools», если это возможно.

- ОБНОВЛЕНИЕ 1 -

Я пытался найти решение Jon , и это на шаг ближе, но не совсем там. У меня еще есть пара вопросов:

1) Рекурсия - я в порядке с изменением makefile.am в корне дерева сборки, а также в любом каталоге, содержащем тесты, но, похоже, должен быть способ сделать это там, где я не надеваю не нужно менять каждый Makefile.am в иерархии. (цель проверки работает таким образом, в конце концов)

2) .PHONY - Я продолжаю получать сообщения о переопределении .PHONY. И это понятно, потому что это устанавливается другим пакетом (в частности, doxygen). Как мне сделать так, чтобы они хорошо играли вместе?

Ответы [ 2 ]

4 голосов
/ 30 сентября 2009

В ваших файлах am весь синтаксис make передается в сгенерированный Makefile. Поэтому, если вы хотите создать новую цель, просто создайте ее, как в Makefile, и она появится в автоматически сгенерированном Makefile. Поместите следующее внизу ваших файлов am.

integration-tests: prerequisites....
        commands to run test

.PHONY: integration-tests
0 голосов
/ 09 октября 2009

Поскольку больше не было ответов, я собираюсь ответить своим решением.

Я решил проблему рекурсии, полностью исключив рекурсию. Используя эту страницу В качестве руководства я переключил весь проект с рекурсивного на нерекурсивный. Затем я клонировал нерекурсивные цели, связанные с проверкой (check, check-am, check-TESTS и т. Д.), В новый набор целей для интеграционных тестов. Пока это работает очень хорошо.

Примечание: вы можете задаться вопросом, почему я вместо этого не просто клонировал рекурсивные цели. Откровенно говоря, я не мог их найти. Либо я не знал, где искать (правил не было в сгенерированном Makefile), либо что-то происходило неявно, и я недостаточно хорошо понимаю autotools, чтобы следовать ему.

Что касается проблемы с переопределением .PHONY, я все еще не нашел решения, кроме как условно исключить другое определение, когда я делаю интеграционные тесты.

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