Создание файла C make для ожидаемого файла .o?

#c #makefile

Вопрос:

У меня есть два файла, main.cpp и sub.h .

sub.h содержит только эту одну строку

 int sub(int n, int *A, int *B, int *C);
 

и main.cpp это очень простая программа, в которой мы вводим данные пользователя в течение трех int* секунд A, B, C , а затем вызываем int sub(int n, int *A, int *B, int *C) функцию. Однако реализация int sub(int n, int *A, int *B, int *C) находится в другом файле, к которому у меня нет доступа: sub.o .

Как бы я написал этот файл Makefile? Я новичок, когда дело доходит до создания Make-файлов, и это сбивает меня с толку в том, как я должен структурировать этот код, особенно с sub.o помощью . Я в замешательстве от того, каковы мои зависимости и как я должен даже начать это писать.

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

1. Я не знаю, что вы подразумеваете под «не имею доступа» sub.o . Означает ли это, что у вас нет ни исходного файла, ни объектного файла? Без хотя бы одного из них вы вообще не сможете создать программу, поэтому вопрос о том, как написать файл makefile, остается спорным.

2. @MadScientist когда я отправлю свой код, человек, который будет его компилировать, получит к нему доступ.

3. Что ж, без доступа к этому файлу вы не сможете его создать main ; он всегда будет терпеть неудачу. Итак, наличие файла makefile не кажется мне таким уж полезным. МММ.

Ответ №1:

Просто включите sub.o в качестве зависимости другую цель. Для этого не нужно писать рецепт. Для main цели вы можете сделать что-то вроде:

 main: main.o sub.o
  g   -o $@ $^
 

При этом используются встроенные правила по умолчанию, которые знают, как компилировать main.cpp в главное.o.

Если файл когда-нибудь пропадет, Make придет жаловаться, что не знает, как его создать:

 make: *** No rule to make target `sub.o'.  Stop.