генерация зависимостей для не-GNU компилятора - PullRequest
0 голосов
/ 02 февраля 2010

Я использую не-gnu C-компилятор, который не поддерживает опцию генерации зависимостей (-MM в gcc).

В этом программном обеспечении они не используют make-файлы. Они используют некоторые древние пакетные файлы Windows для компиляции и связывания кода.

Эти командные файлы не имеют пошагового построения. Я отследил командные файлы и обнаружил, что в конце он выполняет следующие команды:

compiler.exe -option1 -option2 * .c linker.exe -foo -bar * .obj

Компиляция занимает много времени, потому что вам нужно снова скомпилировать все файлы, даже если у вас нет измененных файлов!

Я ищу автономный инструмент, который генерирует зависимости из C-файлов. Но я никого не нашел.

РЕДАКТИРОВАТЬ: Кажется, я не достаточно ясно. Я не могу изменить командные файлы на make-файлы, это что-то БОЛЬШОЕ. Я просто хочу, чтобы незначительные изменения поддерживали наращивание.

РЕДАКТИРОВАТЬ: Требуемый инструмент является автономным инструментом, который генерирует зависимости из файлов c.

Ответы [ 3 ]

1 голос
/ 08 февраля 2010

У вас есть две зависимости в вашем проекте.

  1. Файлы C компилируются в файлы OBJ.
  2. Файлы C включают заголовочные файлы. Измененные заголовочные файлы требуют компиляции C, включая файлы.

Первая тема может быть написана с помощью правила вывода в вашем make-файле. Это позволяет просто перечислять файлы OBJ, которые будут использоваться для связывания.

Вторая тема - найти заголовочные файлы, которые включены. Я не знаю отдельного инструмента. Но вы можете попробовать написать свой собственный, используя препроцессор Си. Вам нужно проанализировать вывод этой команды:

cl -E -I<your_include_path> *.c | find "#line"

Имена файлов, окруженные кавычками, дают зависимости. Если имя файла заканчивается на .c, это цель. В другом месте это зависимость.

0 голосов
/ 02 февраля 2010

Информация о зависимостях, которую создает GCC, фактически генерируется GNU make, вызываемой драйвером gcc. Вы можете получить версию GNU make для Windows из множества мест, включая http://www.mingw.org/wiki/msys.. Вы также можете рассмотреть возможность использования GCC в Windows - вы можете получить версию MinGW по адресу http://tdragon.net/recentgcc.

0 голосов
/ 02 февраля 2010

Почему бы не получить Make (под Cygwin) и создать Makefiles, которые используют ваш compiler.exe в качестве CC?

...