#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.