2014-01-19 11 views
5

多くのExternalProjectsを使用するCMAKEプロジェクトを設定しています。そのうちの1つ(CEGUI)を構築するには、GLM(OpenGL Math Library)をダウンロードする必要があります。このライブラリはライブラリのみを含むです。つまり、コンパイルしないでください。コンパイルできるテストがいくつかありますが、私のプロジェクトでそれらの必要性はありません(さらに、それらのうちの1つが正しくコンパイルされず、コンパイルされたチェーンを壊す)。CMAKEに、必要なヘッダーファイル(より正確にはGLM数学ライブラリ)をダウンロードするように伝えるにはどうすればいいですか?

私が望むのは、通常はExternalProject_add()関数を使用するのと同じようにCMAKEにプロジェクト(GITアップデートなど)をダウンロードするように指示する方法ですが、コンパイルしようとすると致命的エラー)、INCLUDEファイルをインストールしてください(は実際にライブラリです))。

ヘッダーファイルをダウンロードし、CMAKEに functionnalityをインストールしますか。誰も既にGLM header-libraryでこの問題を抱えていますか?

答えて

9

には、CONFIGURE_COMMANDBUILD_COMMANDを空の文字列として設定して、構成とビルドのステップを回避できます。

インストールについて - 私は一般的に気にしません。私は自分のビルドツリーの中にすべてのサードパーティのソースを保持し、私自身のプロジェクトでこれらを参照するのが好きです。しかし、おそらくインストールのステップをcmake -E copy_directory ...のようなものにすることができます。

だから、完全なコマンドは次のようになります。

include(ExternalProject) 
ExternalProject_Add(
    glm 
    PREFIX ${CMAKE_BINARY_DIR}/glm 
    GIT_REPOSITORY https://github.com/g-truc/glm.git 
    CONFIGURE_COMMAND "" 
    BUILD_COMMAND "" 
    INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory 
        <SOURCE_DIR>/glm ${CMAKE_BINARY_DIR}/installed/glm 
    LOG_DOWNLOAD ON 
    LOG_INSTALL ON 
    ) 

あなたもインストールステップを避けたかった場合、また、単に空の文字列を設定します。あなたの答えのための

include(ExternalProject) 
ExternalProject_Add(
    glm 
    PREFIX ${CMAKE_BINARY_DIR}/glm 
    GIT_REPOSITORY https://github.com/g-truc/glm.git 
    CONFIGURE_COMMAND "" 
    BUILD_COMMAND "" 
    INSTALL_COMMAND "" 
    LOG_DOWNLOAD ON 
    ) 
ExternalProject_Get_Property(glm source_dir) 
set(GlmIncludeDir ${source_dir}/glm) 

... 

target_include_directories(MyTarget PRIVATE ${GlmIncludeDir}) 
+0

感謝を:次にGLMディレクトリを含める得るために、ちょうど例えば行う(その後のtarget_include_directoriesまたはinclude_directoriesの呼び出しで使用されます)。これはまさに私が望んでいたものです。 CMAKE_BINARY_DIRの代わりにCMAKE_INSTALL_PREFIXを指すように少し修正しましたが、それはそのままで動作します。 – Danduk82

関連する問題