Houdini Development Kit ( HDK ) VC小記
為了能更好的在VC裡面引入CUDA做Houdini API的開發,能便高效率的使用VisualStudio的整合開發環境工具是必須的。預設的Houdini外掛與節點的開發都是寫完了*.C程式碼之後,使用命令列下的Hcustom命令完成自定義外掛和節點的編譯,但這樣的流程並不方便,而且對於較大的工程管理也有難度。同時我也不熟悉Makefile檔案的書寫,要是呼叫很多諸如OpenGL,MPI,BOOST的這樣的API或庫工具包做開發,Hcustom使用起來就更不方便了,如果可以直接在VC的視窗裡面進行debug,那很多開發工作會方便很多。
PS:其中我居然才發現Linux系統上檔案的檔名稱是區分大小寫的,*.c是c檔案,*.C就是C++檔案,使用gcc編譯HoudiniCustomNode原始檔的時候,識別到*.C的時候就認定為C++編譯了。而Windows上不分檔案字母大小寫,所以VC編譯過程中就吧*.C當成C程式碼去編譯了。。
我在Cmd裡面追蹤了一下 Hcustom和Hcompiler的附加命令,Hcustom在Houdini安裝目錄的bin資料夾下,主要完成2個任務,1個是新增用於HoudiniCustomNode編譯的,編譯器命令列指令,比如-D是定義巨集,-I定義引入庫的搜尋路徑,第二個任務是將指令傳遞給Hcompiler,Hcompiler呼叫VC的編譯工具,完成最終DLL檔案的編譯和連線。順便我也查閱了官方makefile檔案。
--------------------------------------------------------------------------------
Options:
-d Display CFLAGS environment variable passed to hcompile
-g Create debug version of the DSO
-i dir Specify an install directory (default HOME\houdini9.5\dso)
-s Create a stand alone application instead of a DSO
-l libname Link with the library named libname; libraries are passed to the compiler in the order in which they are given
-L libdir Add libdir to the library file search path
-I incdir Add incdir to the include file search path
-t Turn off creation of tagging information. At least one object file in an archive must have the tagging information for Houdini to load the .dll successfully
--------------------------------------------------------------------------------
以上這個是Hcustom的編譯說明~~~
然後,下面這些是cmd上追蹤出來的Hcustom 命令:
Making DEBUG version
Making STANDALONE version
Linking with 'libname'
Making 'SOP_SParticle.o' from 'SOP_SParticle.C'
CFLAGS = -TP -Zc:forScope
-DVERSION="9.5.375"
-DI386
-DWIN32
-DSWAP_BITFIELDS
-DDLLEXPORT=__declspec(dllexport)
-DUT_ASSERT_LEVEL=2
-I "incdir"
-I "D:/Program Files (x86)/Microsoft Visual Studio 8/VC/include"
-I "D:/Program Files (x86)/Microsoft Visual Studio 8/VC/PlatformSDK/include"
-I "D:/PROGRA~2/SIDEEF~1/HOUDIN~1.375/toolkit/include/htools"
-I "D:/PROGRA~2/SIDEEF~1/HOUDIN~1.375/toolkit/include"
-Od
-Z7
-MD
-EHsc
-GR
-DSESI_LITTLE_ENDIAN
-Fo"SOP_SParticle.o"
-link /libpath:"D:/Program Files (x86)/Microsoft Visual Studio 8/VC/lib/amd64"
libpath:"D:/Program Files (x86)/Microsoft Visual Studio 8/VC/PlatformSDK/lib/amd64"
libpath:"libdir""libname"
"D:/PROGRA~2/SIDEEF~1/HOUDIN~1.375/custom/houdini/dsolib/*.a"
"D:/PROGRA~2/SIDEEF~1/HOUDIN~1.375/custom/houdini/dsolib/*.lib"
-out:"dir/SOP_SParticle.exe"
不少東西的寫法和Makefile檔案寫法不太一樣,是Hcompiler的格式,有很多編譯時候的資訊被具體化了,如編譯這個SOP_SParticle節點時候具體呼叫到的靜態庫。
Hcustom和Hcompiler的東西其實也不過是個批處理了,dll檔案的編譯和連線原理和步驟都是一樣的。
在VC裡面重新按照上面追蹤出來的內容完成專案工程的設定,就可以實現在VC的視窗中完成Houdini的自定義節點和DLL檔案的編譯與連線了。或者cl命令列下寫這個MakeFile檔案
--------------------------------------------------------------------------------
下面這個是Houdini用於VC的MakeFiles檔案:
CC = $(MSVCDir)/bin/cl -TP -MD -GX -GR -Zc:forScope -c
LINK = $(MSVCDir)/bin/link
HDEFINES =
-DVERSION ="9.5.375"
-DI386
-DWIN32
-DSWAP_BITFIELDS
-DDLLEXPORT="__declspec(dllexport)"
-DSESI_LITTLE_ENDIAN
HLIBINC = -LIBPATH:$(HFS)/dsolib
HLIBS = $(HFS)/custom/houdini/dsolib/*.a
SYSLIBINC = -LIBPATH:$(MSVCDir)/lib
-LIBPATH:$(MSVCDir)/PlatformSDK/lib
SYSLIBS = INCINC = $(INCDIRS)
-I$(HFS)/toolkit/include -I$(HFS)/toolkit/include/htools
-I$(MSVCDir)/include -I$(MSVCDir)/PlatformSDK/include
SHAREDFLAG = -DLL
BJOUTPUT = -Fo
DSOOUTPUT = -out:
SAOUTPUT = -out:
BJFLAGS = $(HDEFINES) $(INCINC) $(WFLAGS) $(OPTIMIZER)
DSOFLAGS = $(SYSLIBINC) $(LIBDIRS) $(LIBS) $(SYSLIBS) $(HLIBINC) $(HLIBS)
SAFLAGS = $(DSOFLAGS)
用這段Makefile檔案,在Visual Studio 的cl命令列視窗下就可以做Houdini的Custom和DSO的編譯工作了。編譯完成DLL之後,將編譯好的DLL檔案複製到Houdini的DSO搜尋目錄下,啟動Houdini就可以使用節點了。
也可以在Hbatch或者textport下用DSOVersion命令查詢。Makefile裡面檔案命令定義比較瑣碎。但好在MSDN上都寫了,我現在正在查閱所有命令的幫助,回頭還有部分VC視窗中的連線問題,解決後再在VC的視窗中編譯Houdini的DSO就基本上非常完好了。
文章來源:http://blog.csdn.net/DingXun/archive/2009/03/03/3948240.aspx
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22785983/viewspace-619772/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【java學習】JDK(Java Development Kit)JavaJDKdev
- Beans Development Kit (BDK)分析(四) (轉)Beandev
- Beans Development Kit (BDK)分析(五) (轉)Beandev
- Beans Development Kit (BDK)分析(六) (轉)Beandev
- ADRV9371 + Arria 10 SoC Development Kitdev
- [namespace hdk] modintnamespace
- [namespace hdk] diff.hnamespace
- houdini vex 知識
- HDK Fileheader Download(2.0)Header
- [namespace hdk] 向量 direct_vectornamespace
- Game Development Methodology for Small Development Teams (轉)GAMdev
- CSS Houdini: Properties, Values, and the Paint APICSSAIAPI
- SAP ABAP Development Tool 提高開發效率的十個小技巧dev
- Houdini 19,電影特效設計特效
- 和Houdini,CSSPaintAPI打個招呼吧CSSAIAPI
- Node with React: Fullstack Web Development 課程手記(三)——MongoDBReactWebdevMongoDB
- game development -- flowGAMdev
- 簡單VC記憶體檢測記憶體
- 用CSS Houdini畫一片星空CSS
- Houdini - 建立自定義的button樣式
- 《Fluid Engine Development》 學習筆記2-基礎UIdev筆記
- Node with React: Fullstack Web Development 課程手記(二)——Google OAuthReactWebdevGoOAuth
- 『NVIDIA』JETSON XAVIER NX DEVELOPER KIT學習筆記Developer筆記
- macOS Development - Auto LayoutMacdev
- office365 developmentdev
- What is strategy development process?dev
- BW: 80% of development costsdev
- Web Development Job in 4Webdev
- 研究了下Houdini中的CSS Layout APICSSAPI
- Houdini與UE 5程式化資產建模
- Apache JMeter 5.4.1 Build DevelopmentApacheJMeterUIdev
- STM32 Hardware Developmentdev
- PL/SQL development skill testSQLdev
- Java Development Without SpringJavadevSpring
- 探究 Text Kit 和 Core Text 的前世今生 (Text Kit 篇)
- 上新啦!KIT!
- 上新啦KIT
- SAP Certified Development Consultant SAP NetWeaver 2004 - Application Development Focus ABAPdevAPP