close

因為研究需要用到 CGAL,所以開始了安裝的一系列過程

由於網路上資料多半是英文教學,因此解決安裝的困難花了許多時間

好不容易終於成功,因此寫成 blog 希望幫助往後需要安裝的人

 

下載 (官方參考資料):

1.  Boost C++ Library 1.64.0 : boost_1_64_0-msvc-11.0-32.exe

    boost_1_64_0-msvc-xx.0-32.exe, xx 表示你要安裝的 visual studio 版本
    如果是 10->VS2010, 11->VS2012, 12->VS2013

2.  CMake 3.8.2 : cmake-3.8.2-win32-x86.msi

3.  CGAL 4.10 : CGAL-4.10-Setup.exe

4.  我沒有下載 Qt 和 libQGLViewer 因為我沒有用到,但這裡有資料應該可以幫得上忙
     資料 1   資料 2   資料 3

 

以上的網頁有許多是壓縮檔,附檔名是. zip, .tar 等等的

之所以我會都下載安裝檔. exe, .msi,而非壓縮檔的原因

是因為安裝檔會包好許多附帶的檔案,節省自己要到處找附帶 library 的時間

比如說 CGAL library,如 連結 section7 所見,需要 GMP, MPFR, Boost... 等等的資料庫

如果直接下載 CGAL 安裝檔,他就會直接幫你把 GMP 和 MPFR 裝好

(我之前就是直接下載壓縮檔,結果花了很多時間分別找 GMP 和 MPFR,然後還失敗 QQ)

在 CGAL4.10 manual 中有說:
"As Visual C++ is not properly supported by the Gmp and Mpfr projects,
we provide precompiled versions of 
Gmp and Mpfr,
which can be downloaded with the installer
 CGAL-4.10-Setup.exe "

 

等全部該下載的東西都安裝好之後,

第一步驟: 點開 CMake\bin 中的 cmake-gui.exe

打開 cmake-gui 之後,視窗上方

Where is the source code 的地方選 CGAL-4.10 資料夾所在位置

Where to build the binaries 的地方我建了一個資料夾 build 在 CGAL-4.10 資料夾下

然後 Configure 選擇你的 Visual Studio 版本 (我選的是後面沒有 ARM 也沒有 64 的)

 

建好之後,如果沒問題,按下 Generate

順利的話跑完可以看到 Configuring done, Generating done

整個 CMake 視窗

 

第二步驟: 點開 CGAL-4.10\build 中的 CGAL.sln

編譯 ALL_BUILD,編譯完會出現 CGAL-4.10\build\lib 一個 lib 目錄

內容有這些

補充: 如果在ALL_BUILD編譯的時候,選擇的是Debug的話,

         那麼編譯之後的lib或dll都會有 "-gd"

         如果之後自己要的專案是Release版的話,ALL_BUILD就要選擇Release,

         那lib的內容就不會有"-gd"的字

 

第三步驟: 點開你要的 Visual Studio2012 專案

>> 我的 $(Path) 環境變數有

1.  專案右鍵 -> 屬性 ->VC++ 目錄 ->Include 目錄

2.   專案右鍵 -> 屬性 ->VC++ 目錄 -> 程式庫目錄

3.   專案右鍵 -> 屬性 -> 連結器 -> 輸入 -> 其他相依性

4.   然後因為我執行程式的時候一直有很多 dll 找不到,
      所以我就直接把缺的 dll 放在我的專案的 Debug 目錄下
      和 exe 檔放一起,放了這些

如果以上都沒錯的話,正常來說專案應該可以跑了!cgmc2eddc492a5dd1c8fcdd38709cf8c5a0814.gif
 

---------------------------------------------------------------------------------------------

以下是我遇到過的問題,以及我的解法,或網路上的解法:

1.   CMake error: Boost_INCLUDE_DIR
      參考資料

在 CMake 的時候遇到第一個問題 
CMake Error: The following variables are used in this project, but they are set to NOTFOUND. 
Please set them or make sure they are set and tested correctly in the CMake files: 
Boost_INCLUDE_DIR (ADVANCED) 
   used as include directory in directory C:/Program Files/CGAL-4.0/src/CGAL 
   used as include directory in directory C:/Program Files/CGAL-4.0/src/CGALCore 
   used as include directory in directory C:/Program Files/CGAL-4.0/src/CGALImageIO 
   used as include directory in directory C:/Program Files/CGAL-4.0/src/CGALQt3 
   used as include directory in directory C:/Program Files/CGAL-4.0/src/CGALQt4

>>參考資料中的解決方式是把 Boost 解除重裝

因為一開始安裝的時候沒有安裝完整, 導致有東西沒有裝好

>>我的問題則是,我選錯了 Boost 的版本

VS2012 應該要選 boost_1_64_0-msvc-11.0-32.exe, 但我選成 12

因此 CMake 的時候找不到正確的版本所以 Boost 報錯

如果同樣也是這個問題的可以兩種方法都試試看

 

2.   執行專案時找不到 lib or dll 檔

      參考資料 1  參考資料 2

>>以我的狀況,出現這個問題第一是我 CMake 沒有成功

所以有些 CMake 完才會產生的檔案沒有產生

>>另一個問題如果找不到 dll

我的解決方式是直接把 dll 放在專案跟. sln 同一層的 Debug 資料夾中

見第三步驟的 4.

 

3.   專案 Link error

      參考資料 1  參考資料 2  參考資料 3

error LNK2019: unresolved external symbol __imp____gmpz_clear referenced in function "public: __thiscall CORE::BigIntRep::~BigIntRep(void)" (??1BigIntRep@CORE@@QAE@XZ)

類似長這樣的問題

那就是專案的第三步驟 3. 沒做或是東西不完整

加入之後就會解決了

---------------------------------------------------------------------------------------------

以上是我遇到的問題和解決的方法

希望遇到相同問題的人能夠得到解答cgmb01b9cb4500cded74ac19fc70c61de7d180.gif

arrow
arrow

    Sushi 發表在 痞客邦 留言(1) 人氣()