は、例えば、外部のプロジェクトをダウンロードして構築するための共通のルートパスを含む環境変数を設定します。
set (ENV EXTERNAL_PROJ_DOWNLOAD_DIR "${CMAKE_SOURCE_DIR}/externalProjects")
は、ダウンロードのルートフォルダとして使用してのビルドされるように依存関係。あなたはメインプロジェクトでそれを設定(および使用)し、最初の依存関係(2番目の依存関係にも依存する)内からこの値を読み取ることができます。実際にそれを見
あなたのコメントにリンクされたプロジェクトに適用され、あなたはクロノスIN EXTERNAL_PROJ_DOWNLOAD_DIR
を設定します、そしてあなたが持つことになります両方クロノスとトリチウムのプロジェクトでPortAudioにリンクする:
find_package(PortAudio)
if (${PORTAUDIO_FOUND})
include_directories(${PORTAUDIO_INCLUDE_DIRS})
else()
ExternalProject_Add(
PortAudio
GIT_REPOSITORY "https://github.com/syb0rg/PortAudio2.git"
SOURCE_DIR "$ENV{EXTERNAL_PROJ_DOWNLOAD_DIR}/PortAudio"
UPDATE_COMMAND ""
INSTALL_COMMAND ""
BUILD_IN_SOURCE ON
LOG_DOWNLOAD ON
LOG_UPDATE ON
LOG_CONFIGURE ON
LOG_BUILD ON
LOG_TEST ON
LOG_INSTALL ON
)
ExternalProject_Get_Property(PortAudio SOURCE_DIR)
ExternalProject_Get_Property(PortAudio BINARY_DIR)
set(PORTAUDIO_SOURCE_DIR ${SOURCE_DIR})
set(PORTAUDIO_BINARY_DIR ${BINARY_DIR})
set(PORTAUDIO_LIBRARIES ${PORTAUDIO_SOURCE_DIR}/libportaudio_static.a)
set(DEPENDENCIES ${DEPENDENCIES} PortAudio)
include_directories(${PORTAUDIO_SOURCE_DIR}/include)
endif()
SET(LIBS ${LIBS} ${PORTAUDIO_LIBRARIES})
あなた可能性アウトソースビルドを有効にする場合は、set (ENV EXTERNAL_PROJ_BINARY_DIR "${CMAKE_BINARY_DIR}/externalProjects")
も使用してください。私はクロノスから設定したキャッシュ変数はトリチウムに見えるだろう場合、私は知らないので、環境変数を使用することをお勧め
...
はsetとenvのためのマニュアルを参照してください。
おそらく、このプロジェクトは便利です:https://github.com/ruslo/hunter – usr1234567
あなたの質問はおそらくhttp://stackoverflow.com/questions/38059659/nested-external-with-with-witharedの複製です依存関係 – usr1234567
@ usr1234567私はCMakeのみのソリューションを希望します。また、その質問はすでにインストールされているライブラリを言及して、私の質問の依存関係は、ホストシステムにインストールされていると仮定すべきではありません。 – syb0rg