ExternalProject: Allow dependencies on INTERFACE libraries

Respect INTERFACE library property whitelist.  Check that a target has
type "UTILITY" before querying other properties.
This commit is contained in:
Brad King
2015-04-21 11:32:22 -04:00
parent c0502faa4b
commit e1c6df392b
10 changed files with 64 additions and 4 deletions

View File

@@ -2,6 +2,19 @@ cmake_minimum_required(VERSION 3.2)
project(ExternalProjectSubdir NONE)
include(ExternalProject)
# Remove the custom target output to be sure it runs in an
# incremental test. Skip this on VS 6 because it sometimes
# re-runs CMake after the custom command runs.
if(NOT CMAKE_GENERATOR STREQUAL "Visual Studio 6")
file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/PreSubdir1.txt)
endif()
add_custom_target(PreSubdir1
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/PreSubdir1.txt
)
add_library(PreSubdir1Interface INTERFACE)
add_dependencies(PreSubdir1Interface PreSubdir1)
ExternalProject_Add(Subdir1
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Subdir1
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/Subdir1
@@ -11,4 +24,6 @@ ExternalProject_Add(Subdir1
BUILD_COMMAND ""
INSTALL_COMMAND ""
DEPENDS PreSubdir1Interface
)

View File

@@ -8,3 +8,7 @@ endif()
if(NOT "${GENEX_VAR}" STREQUAL "GENEX_VALUE")
message(SEND_ERROR "GENEX_VAR != 'GENEX_VALUE'")
endif()
if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/../PreSubdir1.txt")
message(SEND_ERROR "../PreSubdir1.txt not provided!")
endif()