2017-09-06 87 views
0

我的項目包含sub.h文件,我奉命只包含以下內容:如何創建C++生成文件時,將提供.o文件將隨後

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

sub.h對取自input.txt文件的3個陣列執行未指定的操作。

說明說sub.o將在項目提交後提供。我的問題是,如何爲給定的.o文件創建一個我無法訪問的makefile?我很難判斷我的makefile是否成功,因爲我沒有sub.o

該項目只包含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 
+0

哪裏'message.o'從何而來?你也沒有任何來源。爲什麼'clean.'刪除'sub.o',儘管一旦刪除它就無法再構建它了? –

+0

從* makefile *中刪除任何出現的'sub.o',直到提供必要的* sub.cpp *文件爲止。 –

回答

0

一種解決方案是有一個sub.cpp提供的sub()一些實施,使您的Makefile建立sub.o

當您提交項目時,請將提供的sub.o放在應該生成的位置。在這種情況下,將使用「真實」sub.o編譯您的二進制文件。

+0

我會這樣做,但我不允許包含任何新文件,如sub.cpp – techin424

+0

@ techin424您可以指示Makefile生成一個。它允許嗎? – piwi

+0

然後在提交代碼之前刪除sub.cpp。 – blackghost

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 
相關問題