Nmake получает список всех файлов .o из файлов .cpp - PullRequest
3 голосов
/ 17 декабря 2009

Я использую nmake для компиляции нескольких исходных файлов в эльфа. Однако я не хочу указывать файлы .o в длинном списке следующим образом:

OBJS = file1.o file2.o file3.o

Я бы предпочел использовать подстановочный знак, который указывает все файлы .o в текущем каталоге в качестве зависимостей для .elf. Однако файлы .o не существуют, пока я не скомпилирую их из файлов .cpp. Есть ли способ получить список файлов cpp с использованием подстановочного знака, а затем выполнить замену строки, чтобы заменить .cpp на .o.

Ответы [ 3 ]

4 голосов
/ 17 декабря 2009

В NMAKE нет особенно элегантного способа сделать это. Если вы можете, вы должны использовать вместо этого GNU Make, который доступен в Windows и значительно облегчает многие задачи.

Если вы должны использовать NMAKE, то вы должны использовать рекурсивное make, чтобы сделать это автоматически, потому что NMAKE расширяет символы подстановки только в списках предварительных требований. Я продемонстрировал, как это сделать в ответ на другой похожий вопрос здесь .

Надеюсь, это поможет.

0 голосов
/ 17 декабря 2009

Здесь - еще один ответ, который может вам помочь.

Другим решением может быть использование пакетного файла-обертки, где вы создаете список всех файлов .cpp с циклом «for», например

 del listoffiles.txt
 echo SOURCES= \ >> listoffiles.txt
 for %i in (*.dll) do @echo %i \ >>listoffiles.txt
 echo. >> listoffiles.txt

После этого вы можете попробовать использовать это с макросом препроцессора! INCLUDE в nmake:

 !INCLUDE listoffiles.txt 

(я уверен, что это не будет работать с нуля, но общая идея должна быть ясной).

0 голосов
/ 17 декабря 2009

Я более знаком с Unix make и gmake, но вы могли бы использовать:

OBJS = $(SOURCES:.cpp=.o)

(при условии, что ваши исходные файлы могут быть перечислены в ИСТОЧНИКАХ)

...