Ошибка : при попытке создать файл makefile не отображается «все».

#linux #windows #makefile

Вопрос:

Я абсолютный новичок в этой области и в настоящее время изменяю файл Windows makefile для работы в Linux, я использую jenkins для автоматизации, и он имеет следующий псевдокод.

makefile :

 PROJECT=abc.exe UNITS=$(BOXUNIT)xyzcom EXEREF=C:Program filescommon$(PROJECT)  all:xyz xyz:  @"$(MAKE)" $(MFLAGS) TARGET=WIN32Release$(PROJECT) binary  %include ../../boxunit/file.mak  

Этот код вызывает файл.mak, который имеет псевдокод ..

file.mak :

 PLATFORM:=$(TARGET,D,D) CONFIG:=$(TARGET,D,B) NAME:=$(TARGET,B) EXT:=$(TARGET,E)  

и весь остальной код зависит от этих значений.

Чтобы запустить файл makefile в linux, я внес следующие изменения и создал необходимые каталоги.

 PROJECT=abc UNITS=$(BOXUNIT)/xyzcom EXEREF=/home/common/$(PROJECT)  all:xyz xyz:  "$(MAKE)" $(MFLAGS) TARGET=LINUX64/Release/$(PROJECT) binary  include ../../boxunit/file.mak  

когда я создаю файл, целевое значение не присваивается значениям в файле.файл мак. Вместо этого значения ПЛАТФОРМЫ,CONIFG и т. Д. пусты, и я получаю ошибки, такие как» все » не существует и «xyz» не существует.

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

Любая помощь в этом действительно ценится. Заранее спасибо.

Комментарии:

1. Первое, что я бы сделал, это добавил пробел перед all списком полномочий : all: xyz . (Даже если это на самом деле не имеет значения) Далее, добавление строки между all и xyz должно изменить ошибку.

2. Также вы можете рассмотреть возможность добавления .PHONY . Что-то вроде того .PHONY: all xyz

3. Как необычно. make это не обычный инструмент для проектов Windows. Гораздо чаще бывает, что кто-то пытается адаптировать файл макета POSIX к Windows make , чем наоборот.

4. Проблема, по-видимому, заключается в синтаксисе file.mak . Я не уверен, что $(TARGET,D,B) , например, должно означать,но я не распознаю синтаксис,если только он не предназначен для доступа к переменной с именем «TARGET, D, B». Какую make реализацию вы используете в Windows?

5. Во — первых, вы не установили BOXUNIT переменную. Во-вторых, похоже, что исходный файл makefile был файлом nmake, а не файлом make. nmake — это не сделать. Если вы хотите перевести файл создания nmake, чтобы сделать это, вам нужно понять специальные действия, которые делает nmake, такие как (как упоминал Джон Боллинджер) этот специальный синтаксис с запятыми в именах переменных.