2017-10-04 63 views
1

在我的CMake C++項目中,我使用CGAL。 它通過apt(Package libcgal-dev版本4.7-4)安裝在我的Ubuntu系統(版本16.04 LTS)上。CGAL覆蓋CMAKE_BUILD_TYPE =調試

find_package(CGAL REQUIRED) 
if (CGAL_FOUND) 
    include(${CGAL_USE_FILE}) 
    include(CGAL_CreateSingleSourceCGALProgram) 
endif() 

也能正常工作至今:

在我的CMakeLists.txt,如下CGAL庫包括在內。

的問題出現了,當我想在調試模式下進行編譯: 我打電話cmake的從我的build目錄:

cmake -DCMAKE_BUILD_TYPE=Debug .. 

然而,在輸出中,cmake的說

- 建立類型:釋放

這似乎是由這條線(35)在/usr/lib中/ x86_64的-Linux的GNU/cmake的/ CGAL/CGALConfi被設置g.cmake

set(CGAL_BUILD_TYPE_INIT "Release") 

但我不知道該如何重寫這個。 我唯一發現的是在運行上述命令兩次時啓用了調試,這似乎不是正確的方式。

如何在使用CGAL時使用調試選項進行編譯?

+1

是否'-DCGAL_DONT_OVERRIDE_CMAKE_FLAGS = TRUE'有幫助嗎? –

+0

謝謝。看起來不錯。你知道是否會造成一個問題,我也忽略了CGAL的所有編譯標誌? – Gregor

+0

取決於哪些標誌,但是像數學這樣的東西確實很重要,忽略它們可能會成爲問題。 –

回答

1

它應該運行兩次的原因是,第一次,cmake會運行查找包腳本,但第二次cmake會緩存設置變量,並不會再次運行腳本。 如果你說的是正確的,該腳本覆蓋了構建類型(症狀看起來像是這樣),也許有一個原因,他們這樣做(我不知道可能是什麼原因,但你應該調查它)。 一般的解決方法,以你的情況可能會緩存構建自己輸入,找到包這樣的後重置它:(再次,它可能是危險的,首先,要確保它是安全的)

set (CACHED_BUILD_TYPE ${CMAKE_BUILD_TYPE}) 
find_package(CGAL REQUIRED) 
if (CGAL_FOUND) 
    include(${CGAL_USE_FILE}) 
    include(CGAL_CreateSingleSourceCGALProgram) 
endif() 
set (CMAKE_BUILD_TYPE ${CACHED_BUILD_TYPE})