命令列下編譯多個C/CPP檔案

鴨脖發表於2012-12-17

上次我講了ms 的nmake命令來進行編譯多個cpp檔案。這次我想一步步的自己來,不再通過makefile的幫助。


首先注意以下幾點:

1、#include指令的機制就是講.h檔案中的內容複製到.cpp檔案中,所以你只需要編譯cpp檔案。h檔案只是一個陪襯。另外注意.h中的宣告語句一定要記得在最後加上分號表示結束,否則編譯程式會報錯。你可以把h檔案省去而直接加到cpp檔案中,但是在之後的每一個檔案中你就需要重寫該類或者函式的宣告。所以這也是h檔案存在的原因。

2、你可以通過cl -c命令來編譯類檔案,編譯成obj檔案後,你可以使用lib命令將其編譯為lib檔案。然後使用link命令連線多個obj檔案。預設生成的可執行檔案的名稱是命令中第一個obj檔案的名稱。


看我的例子

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#include<iostream>
class A{
public:
int a;
int b;
void say();
};


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

/**
class A{
public:
int a;
int b;
void say();
};
*/
#include "A.h"


void A::say(){
a = b;
}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//#include<iostream>
#include "A.h"
using namespace std;


int main(){
A a;
a.a = 0;
a.b = 9;
a.say();
cout<<a.a<<" "<<a.b<<endl;
}


這裡有一個問題我想強調一下。很多同學可能多#include的多重包含不在意。其實#include只是一個複製機制。你可以在A的h檔案中直接把iostream給包含了,那麼在main中你就沒有必要再去包含一次。這或許是很多同學不在意的吧。










相關文章