如何在以后提供.o文件时为c ++创建一个makefile

时间:2017-09-06 09:28:26

标签: c++ makefile

我的项目包含一个 sub.h 文件,我被告知只有以下内容:

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

sub.h 对从 input.txt 文件中获取的3个数组执行未指定的操作。

说明中提到 sub.o 将在项目提交后提供。我的问题是,如何为给定的 .o 文件创建一个我无法访问的makefile?由于我没有 sub.o ,因此很难判断我的makefile是否会成功。

项目只包含 main.cpp sub.h 和makefile。

这是我到目前为止对makefile的所有内容:

project: main.o sub.o
    g++ main.o message.o -o project

main.o: main.cpp sub.h
    g++ -c -g main.cpp

clean:
    rm main.o sub.o project

2 个答案:

答案 0 :(得分:0)

一种解决方案是让sub.cpp提供sub()的一些实现,并使您的Makefile构建为sub.o

提交项目时,请将提供的sub.o放在应该生成的位置。在这种情况下,"真实" sub.o将用于编译二进制文件。

答案 1 :(得分:0)

如果您丢失了目标文件,则无法编译为可执行文件(即链接)。但是您可以(仅)将main.c编译为目标文件 - 在此阶段,未定义sub并不重要。我只能假设您提交时发生链接。

这个main.c将编译为一个对象:

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

int main()
{
  int n = 0; 
  int* A = 0;
  int* B = 0;
  int* C = 0;

  sub(n, A, B, C);
}

使用例如

gcc -c main.cpp

如果你确实掌握了sub.o,你可以使用

进行链接
gcc main.o sub.o -o project