2015-11-10 50 views
1

好的,我剛剛開始在g ++編譯器中使用-D標誌以不同的方式編譯代碼。g ++ -D標誌添加定義到目標文件

但是我遇到了使用-D標誌編譯一個文件的問題,我需要繼續在後續文件中使用它。

例如,我有2個文件:

sardine.hpp sardine.cpp 

和兩個文件具有由密閉部分:

#ifdef PLANKTON 
    #endif 

然後我編譯這個使用:

g++ -c -D PLANKTON sardine.cpp -o sardine.o 

如果我再想在另一個編譯中使用這個鏈接,爲了代碼的工作,我將不得不再次使用D標誌(據我所知),例如:

g++ -D PLANKTON tuna.cpp sardine.o -o tuna 

有沒有辦法在編譯時永久添加一個定義?這樣我下一次編譯時就不必添加-D標誌了?

對不起,如果我錯過了什麼:「(

感謝

+1

寫的makefile 。 –

+1

每個編譯過程完全獨立於其他任何一個。當編譯器解析.cpp源文件時,它只能處理特定實例具有的信息。正如其他人所說,您可能想要考慮使用make或其他編譯系統來更好地管理編譯設置。你也可以把'#define PLANKTON'放到它們都包含的共享頭文件中,然後在重建之間修改它,這樣可以讓你的命令行更簡單。 – notmyfriend

+0

@notmyfriend啊,包括共同標題中的定義可能是要走的路。 Darn過於專注於讓-D標誌正常工作:P,謝謝! – Liang

回答

0

我會用一個makefile,您可以在裏面定義你的編譯和設置的標誌,所以你不必輸入的一切! 。每一次

看看這個教程:

https://www.cs.umd.edu/class/fall2002/cmsc214/Tutorial/makefile.html

+0

我實際上每次都使用腳本進行編譯。這比每次更改構建結構時都要修改makefile容易一些(我現在還在構建項目原型) – Liang

相關問題