通过使用makefile 可以方便代码的编译,减少代码的编译时间,利于维护大的工程。
#生成的可执行文件 all:runso #使用的编译器 CC = g++ #包含的头文件 INCLUDE = . #编译选项 #-g 表示加入调试 -Wall生成警告信息 -ansi 关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性 CFLAGS = -g -Wall -ansi runso:Ccalculate.o main.o #注意这里CC前面一定要是TAB不是空格, #否则会报错。!!!!!!!!!!! $(CC) -o runso Ccalculate.o main.o Ccalculate.o:Ccalculate.cpp Ccalculate.h $(CC) -I$(INCLUDE) $(CFLAGS) -c Ccalculate.cpp main.o:main.cpp $(CC) -I$(INCLUDE) $(CFLAGS) -c main.cpp clean: #注意这里CC前面一定要是TAB不是空格, #否则会报错。!!!!!!!!!!! rm *.o
make -f makeso clean 执行makefile中的clean命令,清除.o文件。
make -f makeso 执行makefile命令,-f选项指定要执行的makefile文件。
源程序代码
Calculate.h文件
#include<vector> #include<string> using namespace std; class Calculate { public: void InitVector(); void ComputeValue(); void GetResult(vector<double> &vResult); private: vector<int> m_vSrcValue; vector<double> m_vCalvalue; };
Calculate.cpp文件
#include"Ccalculate.h" void Calculate::InitVector() { vector<int>().swap(m_vSrcValue); for(int iINdex = 0; iINdex < 1000; iINdex ++) { m_vSrcValue.push_back(iINdex); } } void Calculate::ComputeValue() { InitVector(); for(int iINdex =0; iINdex < m_vSrcValue.size(); iINdex ++) { double dTemp = m_vSrcValue[iINdex] * 462 + 234/23+65*423; m_vCalvalue.push_back(dTemp); } } void Calculate:: GetResult(vector<double> &vResult) { vResult = m_vCalvalue; }
main.cpp文件
#include"Ccalculate.h" #include<iostream> #include<stdio.h> using namespace std; int main() { printf("it is in main\n"); Calculate *pCalculate = new Calculate(); vector<double> vResult; pCalculate->ComputeValue(); pCalculate->GetResult(vResult); for(int iIndex = 0; iIndex < vResult.size(); iIndex ++) { cout<<"value is"<<vResult[iIndex]<<endl; } if(NULL != pCalculate) { delete pCalculate; } return 0; }