VS項目屬性配置實驗過程

(原創,轉載註明出處:http://www.cnblogs.com/binxindoudou/p/4017975.html )html

1、實驗背景c++

cocos2d-x已經發展的相對完善了,從項目的建立、編譯、運行到最後的打包都有相應的便捷工具,開發者只須要關注本身的遊戲邏輯代碼便可,這一點很贊,但是傻瓜式的編程,讓我至今還只停留在使用vs建個空項目作個小demo的階段,我根本不知道cocos2d-x項目到底是如何組織的,那些項目與項目之間的關係,那些庫文件的引用,那些屬性的配置,那些路徑設置,那些宏定義到底是在哪裏,爲何會出現兩個窗口,一大片屬性到底是什麼意思,,因此頗有必要研究一下。如今把實驗過程同你們交流一下,有什麼說的片面或不對的地方,歡迎你們提出,一同進步。數據庫

2、實驗目標編程

1.使用vs從一個空項目配置成爲一個能夠運行cocos2d-x官方lua demo的項目。json

2.學習vs項目屬性配置相關知識。socket

3、實驗條件工具

Virtual Studio 2013 Update3 、 cocos2d-x-3.2  Jul.17 2014(將其解壓在桌面上,安裝配置好cocos2d-x)學習

4、實驗步驟與注意事項ui

1.使用vs在桌面上建立一個win32控制檯應用程序的空項目,我這就叫test,按照下圖二的目錄結構進行建立,其中文件( 包括資源文件)都是從引擎根目錄下找到並複製到項目中的,這裏的cpps就是所謂的「本身編寫的cpp代碼」。lua

 

 

(1)默認vs的空項目的解決方案和項目名稱相同,一個解決方案能夠包含多個項目,一個解決方案對應一個程序,test項目默認爲核心,其餘項目爲其服務,生成lib和dll。頭文件、源文件、資源文件三個是文件篩選器,至關於邏輯目錄,只是便於管理文件,與文件的物理路徑無關,我習慣將其對應起來。外部依賴項不禁本身控制,包含外部庫的頭文件。上圖三四是我配置完成後的項目,包含cpps(自定義cpp邏輯代碼),luas(自定義的lua邏輯代碼),res(程序的資源文件)。

(2).sdf是一個數據庫文件,編譯時自動生成,存放工程信息,與代碼提示相關。.sln文件是解決方案文件,保存的是解決方案信息,是一個解決方案中不一樣項目之間的關係文件。

2.項目-》屬性管理器,右鍵Debug|win32,添加現有屬性表,從cocos2d-x引擎根目錄(如下稱$(EngineRoot))下找到  $(EngineRoot)\cocos\2d\

cocos2d_headers.props和cocos2dx.props兩個文件添加。

3.回到解決方案管理器,右鍵test->屬性,c/c++->常規->附加包含目錄,添加上以下目錄

 

$(EngineRoot)cocos\scripting\lua-bindings\auto
$(EngineRoot)cocos\scripting\lua-bindings\manual
$(EngineRoot)cocos\audio\include
$(EngineRoot)external\lua\lua
$(EngineRoot)external\lua\tolua
$(EngineRoot)external\chipmunk\include\chipmunk

 

(1)附加包含目錄:其實就是「本身編寫的cpp代碼」須要查找頭文件和原文件的位置。

(2)$(EngineRoot)是在cocos2d_headers.props和cocos2dx.props中定義的

4.預處理器,這一步是定義cocos2dx中相似平臺_WINDOWS這樣的代碼(我說我爲何有的時候不明白這個到底是從哪定義到的,這裏恍然大悟)

懶死,複製吧,嘿嘿

WIN32
_WINDOWS
STRICT
_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS_DEBUG
COCOS2D_DEBUG=1

5.附件庫目錄

$(EngineRoot)external\lua\luajit\include\;$(EngineRoot)external\lua\luasocket\;$(EngineRoot)external\lua\tolua\;$(EngineRoot)external\xxtea\;$(EngineRoot)cocos\scripting\lua-bindings\;$(EngineRoot)external\ConvertUTF\;$(EngineRoot)external\edtaa3func\;$(EngineRoot)external\tinyxml2\;$(EngineRoot)external\unzip\;$(EngineRoot)external\xxhash\;$(EngineRoot)3d\;$(EngineRoot)base\;$(EngineRoot);$(EngineRoot)deprecated\;$(EngineRoot)math\;$(EngineRoot)physics\;$(EngineRoot)platform\;$(EngineRoot)renderer\;$(EngineRoot)2d\;$(EngineRoot)cocos\audio\include\;$(EngineRoot)cocos\audio\win32\;$(EngineRoot)cocos\editor-support\cocosbuilder\;$(EngineRoot)external\json\;$(EngineRoot)external\json\internal\;$(EngineRoot)cocos\editor-support\cocostudioActionTimeline\;$(EngineRoot)cocos\editor-support\;$(EngineRoot)cocos\editor-support\spine\;$(EngineRoot)cocos;etwork\;$(EngineRoot)cocos\storage\local-storage\;$(EngineRoot)cocos\ui\;$(OutDir);%(AdditionalLibraryDirectories)

(1)這個是我從$(EngineRoot)中複製的。

(2)附加庫目錄->添加第三方庫須要查找的目錄,這一步以後, 外部依賴項就自動添加了,打開來看會發現裏邊有好多.h,之後使用#include "*****.h"就無憂了。

6.附加依賴項

(1)附加依賴項,就是所謂的庫文件了lib,靜態庫文件,其實有了他們,就至關因而有了第五步中的.h們對應的.cpp們(我是這麼理解的),到時候「寫入」(我這不懂,姑且這麼叫吧)到exe中。

(2).dll是動態連接庫,是在運行時才能加載的,不會被寫入最終文件.exe中。因此常常見到綠色軟件.exe外部有他們。

7.兩個小窗口(這裏還在研究中,不知道這裏對應那塊代碼,這樣設置就對了)

8.預生成事件

(1)生成事件分爲三種,預先生成事件=》編譯以前執行的事件;預鏈接事件=》連接以前的事件;後期生成事件=》編譯以後的事件

(2)這裏用到的是命令行代碼,我主要是複製了一些文件

//預先生成事件
if not exist $(PorjectDir) mkdir $(ProjectDir) xcopy "$(EngineRoot)cocos\scripting\lua-bindings\script\*.lua" "$(ProjectDir)" /e /y
//預鏈接事件
if not exist $(OutDir) mkdir $(OutDir) xcopy "$(EngineRoot)build\$(Configuration).win32\*.lib" "$(OutDir)" /e /y xcopy "$(EngineRoot)build\$(Configuration).win32\*.dll" "$(OutDir)" /e /y

//後期生成事件
if not exist $(OutDir) mkdir $(OutDir)
if not exist $(OutDir)res\ mkdir $(OutDir)res\
if not exist $(OutDir)luas\ mkdir $(OutDir)luas\
xcopy "$(ProjectDir)*.lua" "$(OutDir)" /e /y
xcopy "$(ProjectDir)*.dll" "$(OutDir)" /e /y
xcopy "$(ProjectDir)res\*" "$(OutDir)\res" /e /y
xcopy "$(ProjectDir)luas\*" "$(OutDir)\luas\" /e /y

從根目錄複製已經編譯好的動態和靜態庫到這個空項目工程中

(3)$(OutDir) ===》C:\Users\username\Desktop\test1\Debug,最後的生成目錄,完成後能夠單獨拷貝出來運行。

(4)$(Configuration),因Debug版本和Release版本而異

(5)$(PorjectDir),Debug工程目錄,調試目錄,工做目錄

9.能夠先編譯一次,而後將

在生成中使用設置爲否,以避免每次都複製這麼多文件(若是沒有什麼變化的話,這一步能夠手動進行復制)。

10.看看效果吧

11.完成了。

 (原創,轉載註明出處:http://www.cnblogs.com/binxindoudou/p/4017975.html )

相關文章
相關標籤/搜索