3DSlicer6:编译、调试、规范化的开发
生活随笔
收集整理的這篇文章主要介紹了
3DSlicer6:编译、调试、规范化的开发
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.編譯
Step1:CMake生成Slicer工程文件
使用Cmake生成Slicer的解決方案(Solution)包括兩小點(diǎn):
- 指定源代碼目錄:C:/myProjects/Slicer4;目標(biāo)目錄:C:/myProjects/Slicer4-SuperBuild-Debug
- Configure后,添加qmake路徑:QT_QMAKE_EXECUTABLE=C:/myProject/Qt-4.6.3/bin/qmake.exe(要根據(jù)實(shí)際情況進(jìn)行修改)。Generate后完成工程的創(chuàng)建。
Step2:編譯Slicer
打開(kāi)Slicer.sln,整個(gè)工程有28個(gè)項(xiàng)目組成,包括我們熟悉的VTK、ITK、DCMTK、CTK等庫(kù)。鼠標(biāo)右鍵點(diǎn)擊ALL_BUILD編譯所有項(xiàng)目。等待編譯完成,大概3~4小時(shí)~~~
Notice1:每個(gè)項(xiàng)目在工程中所起到的作用不同,其編譯過(guò)程也遵循一定的順序,如果其中一個(gè)項(xiàng)目處想問(wèn)題,那么在這個(gè)項(xiàng)目編譯之后的所有項(xiàng)目都會(huì)出錯(cuò)。 Notice2:如果真的很不幸,在編譯的過(guò)程中出現(xiàn)了錯(cuò)誤。考慮到重新編譯一次時(shí)間太長(zhǎng),可以按照輸出窗口的提示進(jìn)行糾錯(cuò),然后從此處為起點(diǎn)進(jìn)行編譯。 Notice3:工程中的VTK、ITK等項(xiàng)目的源代碼并沒(méi)有包含在Slicer的源碼中,他們是在編譯的過(guò)程中,利用Git或SVN向遠(yuǎn)程服務(wù)器請(qǐng)求下載。因此編譯速度的快慢很大程度上取決于網(wǎng)絡(luò)環(huán)境。
2.調(diào)試
編譯之后還無(wú)法對(duì)Slicer的程序進(jìn)行調(diào)試,需要以下幾個(gè)步驟: 1) cd slicer-superbuild-debug\slicer-build2) cmake.exe –VV --debug-output . ? ?(注意這里還有一個(gè) . )
3) slicer.exe --VisualStudio slicer.sln /out buildlog.txt /build ?然后相關(guān)文件生成在切片機(jī)構(gòu)建/ bin /調(diào)試目錄
4) slicerQt-real.exe 就是調(diào)試文件.
5) slicer.exe –VisualStudio slicer.sln ?
打開(kāi)VisualStudio后,瀏覽左邊的項(xiàng)目,將qSlicerQT設(shè)置為啟動(dòng)項(xiàng)目,否則會(huì)被要求指定調(diào)試的項(xiàng)目。
3.Slicer的缺陷跟蹤系統(tǒng)
目前,Slicer已經(jīng)有超過(guò)120萬(wàn)代碼,并變得越來(lái)越龐大。盡管3DSlicer管理人員在各種操作系統(tǒng)、各種硬件設(shè)備情況下調(diào)試,但由于功能復(fù)雜、代碼龐大,也會(huì)出現(xiàn)管理人員無(wú)法發(fā)現(xiàn)的問(wèn)題。 為了保證Slicer軟件的質(zhì)量,以及對(duì)功能的完成度進(jìn)行控制,保證軟件開(kāi)發(fā)的順利進(jìn)行,3Dslicer項(xiàng)目采用缺陷跟蹤系統(tǒng)Mantis對(duì)Slicer繼續(xù)管理。 缺陷管理平臺(tái)Mantis ,也做MantisBT,全稱Mantis Bug Tracker。Mantis是一個(gè)基于PHP技術(shù)的輕量級(jí)的開(kāi)源缺陷跟蹤系統(tǒng),以Web操作的形式提供項(xiàng)目管理及缺陷跟蹤服務(wù)。個(gè)人可定制的Email通知功能,每個(gè)用戶可根據(jù)自身的工作特點(diǎn)只訂閱相關(guān)缺陷狀態(tài)郵件。報(bào)告3DSlicer應(yīng)用程序相關(guān)問(wèn)題流程: 1.https://issues.slicer.org/view_all_bug_page.php在View Issues中創(chuàng)建一個(gè)話題; 2.詳細(xì)填寫(xiě)問(wèn)題緣由; 3.箱Slicer開(kāi)發(fā)者郵箱發(fā)送一份郵件,郵件中必須包含創(chuàng)建的話題,郵件格式名稱如下:[Bug<IssueNumber>]bug名稱。如下所示:
4.規(guī)范化的3DSlicer開(kāi)發(fā)
單詞縮寫(xiě)的大小寫(xiě)應(yīng)該保持一致,保持大寫(xiě)或小寫(xiě)。例如- RASToSlice ? √ ? RasToSlice ?×
- vtkMRML ? ? ?√ ? ?vtkMrml ? ?×
- vtkSlicer ? ? ? ?√ ? ?vTKSlicer ? ×
- GetWindow not GetWin
- TestMyFeature.cxx not Test-My_Feature.cxx
- 大部分注釋?xiě)?yīng)該寫(xiě)在頭文件中。
- 代碼做出修改后及時(shí)更新注釋。
- 使用關(guān)鍵字“\todo”(待辦事項(xiàng))來(lái)標(biāo)記點(diǎn)需要重新審視的代碼。
- 源文件中注釋掉的代碼塊也需要進(jìn)行注釋,如果需要,可以插入svn的版本鏈接作為注釋。
- 3D視圖中使用RAS坐標(biāo)。
- 所有單位為毫米表示。
- 每行代碼不超過(guò)80個(gè)字符。
總結(jié)
以上是生活随笔為你收集整理的3DSlicer6:编译、调试、规范化的开发的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 动态获取API地址
- 下一篇: 3DSlicer7:FAQ-1