專案製作

      在〈專案製作〉中尚無留言

開新專案

製作大型專案時, 可開啟專案. 而Dev C++ 的專案製作, 也可分離出函數庫檔, 供日後其他專案使用

首先選取檔案/開新檔案/專案, 本例使用Console Application進行說明, 請將名稱改為 Project1, 然後儲存位置請開啟一個新目錄容納所有的檔案.

緊接著在左邊的專案總管中, 選取 Project1按右鍵, 選取new File, 並存為 sdk.cpp. 然後再開啟一個 new File,  存成sdk.h. 此 .h檔案名不一定要跟.cpp同檔案名. 但為了日後管理,  還是建議使用同檔名.

檔案佈局

下面的程式碼說明了如何產生  0<=random()<1之間的亂數.

需注意的是 sdk_random()中使用了 static 變數, 如果是第一次調用, 就種下種子. 如果不是第一次調用, 就無需重新種下種子. 

另在main.cpp中, 需 include “sdk.h”. sdk.h是自訂標頭檔, 所以需使用 “”雙引號包含. 如果是系統預設標頭檔, 則使用 <>包含. 此法則在Linux 版本亦同. 

不過就算是系統預設標頭檔, 使用  “” 也可以

sdk.cpp如下

#include <math.h>
#include <stdlib.h>
#include <time.h>
float sdk_pow(float x, float y){
	return pow(x, y);
}
float sdk_random(){
	static int first=0;
	first++;
	if(first==1)
		srand(time(NULL));
	return rand()/32768.0f;
}

sdk.h如下

float sdk_pow(float, float);
float sdk_random();

main.cpp如下

#include "sdk.h"
#include <iostream>
int main(int argc, char** argv) {
	for (int i=0;i<100;i++){
		float r=sdk_random();
		printf("%f\n", r);
	}
	return 0;
}

結果如下

0.052917
0.408173
0.284393
0.290314
0.487457
0.395355
0.241516
0.289825
0.995239
0.995605
請按任意鍵繼續 . . .

--------------------------------
Process exited after 8.261 seconds with return value 0
請按任意鍵繼續 . . .

Makefile

Makefile是 C++的編譯設定檔. 在Dev C++中命名為 Makefile.win. 其實Makefile是一個很複雜的設定檔, 有專門的一本書在介紹.  本例僅列出如下

# Project: Project1
# Makefile created by Dev-C++ 5.11

CPP = g++.exe
CC = gcc.exe
WINDRES = windres.exe
OBJ = main.o sdk.o
LINKOBJ = main.o sdk.o
LIBS = -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib" -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc
INCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include"
CXXINCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"
BIN = Project1.exe
CXXFLAGS = $(CXXINCS) 
CFLAGS = $(INCS) 
RM = rm.exe -f

.PHONY: all all-before all-after clean clean-custom

all: all-before $(BIN) all-after

clean: clean-custom
 ${RM} $(OBJ) $(BIN)

$(BIN): $(OBJ)
 $(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)

main.o: main.cpp
 $(CPP) -c main.cpp -o main.o $(CXXFLAGS)

sdk.o: sdk.cpp
 $(CPP) -c sdk.cpp -o sdk.o $(CXXFLAGS)

生成的檔案

編譯出來的檔案, 有main.o, sdk.o, project1.exe.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *