2017-10-04 5 views
1

私のCMake C++プロジェクトでは、私はCGALを使用しています。 これは私のUbuntuシステム(バージョン16.04 LTS)にapt(パッケージlibcgal-devバージョン4.7-4)を介してインストールされています。これは、これまで正常に動作しますCGAL上書きCMAKE_BUILD_TYPE =デバッグ

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

次のように私のCMakeLists.txtで

は、CGALライブラリが含まれています。

私はデバッグモードでコンパイルするときに問題が立ち上がる: 私は私のビルドディレクトリからcmakeのを呼び出す:

cmake -DCMAKE_BUILD_TYPE=Debug .. 

ただし、出力では、cmakeのは

を言う - 構築しますタイプ:これはは/ usr/libに/ x86_64の-のlinux-gnuの/ cmakeの/ CGAL/CGALConfiにこのライン(35)によって設定されているように見える

をリリースg.cmake

set(CGAL_BUILD_TYPE_INIT "Release") 

しかし、私はこれを上書きする方法がわかりません。 上記のコマンドを2回実行するとデバッグが有効になることがわかりました。これは正しい方法ではないようです。

CGALの使用中にデバッグオプションを使用してコンパイルするにはどうすればよいですか?

+1

は '-DCGAL_DONT_OVERRIDE_CMAKE_FLAGS =いTRUE'ヘルプ? –

+0

ありがとうございます。よく見える。 CGALのコンパイルフラグもすべて無視するのが問題になるかどうか分かりますか? – Gregor

+0

どのフラグに依存するのですか、-frounding-mathのようなものは本当に重要であり、無視することは問題になります。 –

答えて

1

2回実行する理由は、初めてcmakeがfindパッケージスクリプトを実行しますが、2回目に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})