2015-09-01 34 views
1

使用Visual Studio 2015的CMAKE構建後,我發現有一些構建錯誤需要我編輯代碼。我覺得這不應該是必要的,並想知道如果我可能在構建過程中做了一些錯誤,以使這些錯誤表面使用VS2015構建CGAL的過程

首先,我必須將文件include/CGAL中的編譯器名稱從vc130更正爲vc140 /auto-link/auto-link.h和cmake/module/CGAL_GeneratorSpecificSettings.cmake。我認爲這僅僅是因爲它沒有被測試VS2015,並且有人認爲vc130會跟隨vc120。

我碰到的另一個問題是八個函數沒有編譯。這些是函數

Segment_2<R_>::min 
Segment_2<R_>::max 
Segment_2<R_>::vertex 
Segment_2<R_>::point 
Segment_2<R_>::operator[] 
Segment_3<R_>::min 
Segment_3<R_>::max 

這個問題似乎是實現的類型簽名不符合聲明的類型簽名。我試圖修復類型簽名,但無法使其完全匹配。爲了解決這個問題,我最終將這些函數的實現移到了聲明中。我想爲什麼這顯然是必要的,因爲它可能是爲其他人編寫的。 Sloriot評論說,這是因爲VS2015編譯器比CGAL測試的更新。不過,我的理解是,visual studio編譯器是向後兼容的,因此它不應該破壞代碼來更新編譯器。

+0

「視覺工作室編譯器向後兼容」:顯然不完全。他們修復錯誤,引入新的錯誤等。 –

回答

2

CGAL正式與VS2015兼容的第一個版本是CGAL 4.7。 看來,新版本的Microsoft在編譯它之前接受的有效C++代碼時遇到了一些問題。這就解釋了爲什麼CGAL 4.6版本(或以前的版本)對新編譯器有一些編譯問題。

+0

我剛剛使用VS2013進行了編譯測試(在恢復我的代碼更改之後),它工作正常。這似乎是我對向後兼容性的假設是錯誤的。我無法從微軟那裏找到任何有關這方面的信息。 – Taus