2014-07-20 32 views
0

目前我正在嘗試學習跨平臺開發的最佳實踐,以便在將來的項目中提高生產力。我開始在OS X和Linux上使用unix終端進行基本設置。然後,我在窗口上使用了Cygwin環境與MinGW GCC編譯器的組合。然後,所有東西都從一個通用的makefile文件(參見下文)中進行管理,該文件將使用rsync作爲鏈接到中央存儲庫的基本版本管理形式。將開發環境遷移到使用CMake + Git

我目前的項目目錄結構是:

project_root 
    include 
    src 
    makefile 
    platform 
    win 
     build 
     resources (Media) 
     shaders (GLSL Shaders) 
     include (platform specific include) 
     lib (platform specific libraries) 
     object 
    mac 
     build 
     resources 
     shaders 
     include 
     lib 
     object 
    resources 
    shaders 

和makefile文件看起來像:

PROJECT_NAME := craft 


UNAME := $(shell uname) 

OS_TYPE  := WINDOWS 
EXE   := .exe 
DIR   := win 
LDFLAG  := -Wall -g -std=c++11 -mwindows -static -L../platform/$(DIR)/lib -lstdc++ -lgdi32 -lglew -lglfw3 -lopengl32 
CXXINCLUDE := -I../platform/$(DIR)/include 
LD   := i686-w64-mingw32-gcc 
CXX   := i686-w64-mingw32-gcc 

ifeq ($(UNAME), Darwin) 
OS_TYPE  := MACINTOSH 
EXE   := 
DIR   := mac 
LDFLAG  := -Wall -g -std=c++11 -L../platform/$(DIR)/lib -lstdc++ -lglfw3 -framework Cocoa -framework OpenGL -framework IOKit -framework CoreVideo 
CXXINCLUDE := -I../platform/$(DIR)/include 
LD   := clang 
CXX   := clang 
endif 

CXXFLAG  := -Wall -g -I../include 
CU   := nvcc 
CPP_FILES := $(wildcard *.cpp) 
OBJ_FILES := $(CPP_FILES:.cpp=.o) 

all: build 

build: $(OBJ_FILES) 
    $(LD) -o ../platform/$(DIR)/build/[email protected]$(EXE) $(addprefix ../platform/$(DIR)/object/, $^) $(LDFLAG) 

%.o: %.cpp 
    $(CXX) -o ../platform/$(DIR)/object/[email protected] -c $< $(CXXFLAG) $(CXXINCLUDE) 

platform: 
    echo $(OS_TYPE) 

clean: clobject 
    rm -rf ../platform/$(DIR)/build/build$(EXE) 

clobject: 
    rm -rf ../platform/$(DIR)/object/*.o 

resources: 
    rsync -va --delete ../resources ../platform/$(DIR)/build/ 

shaders: 
    rsync -va --delete ../shaders ../platform/$(DIR)/build/ 

run: 
    ../platform/$(DIR)/build/build$(EXE) 

send: 
    rsync -va --delete $(DEV)/$(PROJECT_NAME) $(DEV_MASTER) 

get: 
    rsync -va --delete $(DEV_MASTER)/$(PROJECT_NAME) $(DEV) 

這是罰款的任何基本的項目,但它確實有問題,我想爲例子,在Windows中使用MSVC而不是GCC。我真的很感激任何有關環境設置和工作流程/工具的建議嗎?

最好,我想:

  • 用於每個系統的本地編譯器(WIN:MSVC,蘋果:鏘,林:GCC)。
  • 一個基本的CMake設置,可以與我當前的文件結構一起工作,這可能嗎?
  • 從一個可以運行Git(而不是rsync)的命令shell工作,CMake並使用生成的文件構建可執行文件。最好使用unix命令而不是DOS。

這一切都是相當簡單的使用* nix的基礎系統,但與例如窗戶的時候,我可以使用的Git的Bash不使用Visual Studio命令提示符運行生成文件/忍者使用cl.exe時?或者使用.vcprog會更好嗎?

回答

1

是的,這是非常可行的,實際上非常簡單。

你想要的一切應該包括在基本的cmake例子中。

有關構建文件夾的注意事項: 這些不應該是源代碼樹的一部分。相反,您應該將源樹中某個位置的所有資源文件複製到build文件夾中。

+0

我幾乎已經轉換它了,我明白,如果聲明仍然是必要的平臺。當你習慣了find_package/libraries命令時,這很容易。我也從src中取出了build目錄,這使得它可以更好地推送到github,乾杯。 – josh247