12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- cmake_minimum_required(VERSION 2.8.7)
- set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../" ${CMAKE_MODULE_PATH})
- set(EXTERNAL_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/TheExternals)
- set(EXTERNAL_PROJECT_FILE_PREFIX "TheExternal_")
- include(ExternalProject)
- include(ctkMacroCheckExternalProjectDependency)
- project(SuperBuildTest NONE)
- option(${PROJECT_NAME}_SUPERBUILD "Build ${PROJECT_NAME} and the projects it depends" ON)
- mark_as_advanced(${PROJECT_NAME}_SUPERBUILD)
- if(${PROJECT_NAME}_SUPERBUILD)
- option(FOO_OPTION "Option mark_as_superbuild" ON)
- mark_as_superbuild(FOO_OPTION)
- set(FOO_VAR "FooVar")
- mark_as_superbuild(FOO_VAR)
- set(FOO_LIST Item1 Item2)
- mark_as_superbuild(FOO_LIST)
- set(FOO_LIST_FOR_CMAKE_CMD "Item1${EP_LIST_SEPARATOR}Item2")
- mark_as_superbuild(FOO_LIST_FOR_CMAKE_CMD CMAKE_CMD)
- set(FOO_VAR_WITH_LABELS "FooVarWithLabels")
- mark_as_superbuild(VARS FOO_VAR_WITH_LABELS LABELS "LABEL_A" "LABEL_B")
- set(BAR_VAR_WITH_LABELS "BarVarWithLabels")
- mark_as_superbuild(VARS BAR_VAR_WITH_LABELS LABELS "LABEL_B")
- set(LibA_VAR "LibA")
- mark_as_superbuild(VARS LibA_VAR PROJECT LibA)
- set(LibA_VAR_WITH_LABELS "LibAWithLabels")
- mark_as_superbuild(VARS LibA_VAR_WITH_LABELS PROJECT LibA LABELS "LABEL_A")
- # Since LibC depends on LibD, LibD will also be expected to be found on the system
- set(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibC 1)
- endif()
- set(${PROJECT_NAME}_DEPENDENCIES LibA LibB LibC)
- superbuild_include_dependencies(${PROJECT_NAME})
- if(${PROJECT_NAME}_SUPERBUILD)
- ExternalProject_Add(${PROJECT_NAME}
- ${${PROJECT_NAME}_EXTERNAL_PROJECT_ARGS}
- DOWNLOAD_COMMAND ""
- CMAKE_CACHE_ARGS
- -D${PROJECT_NAME}_SUPERBUILD:BOOL=OFF
- SOURCE_DIR ${${PROJECT_NAME}_SOURCE_DIR}
- BINARY_DIR ${${PROJECT_NAME}_BINARY_DIR}/${PROJECT_NAME}-build
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- DEPENDS
- ${${PROJECT_NAME}_DEPENDENCIES}
- )
- return()
- endif()
- function(check_variable var_name expected_value)
- if(NOT "x${${var_name}}" STREQUAL "x${expected_value}")
- message(FATAL_ERROR "Problem with mark_as_superbuild() - CMake variable [${var_name}] is incorrectly set !\n"
- "current:${${var_name}}\n"
- "expected:${expected_value}")
- endif()
- endfunction()
- check_variable(FOO_OPTION "ON")
- check_variable(FOO_VAR "FooVar")
- check_variable(FOO_LIST "Item1;Item2")
- check_variable(FOO_LIST_FOR_CMAKE_CMD "Item1;Item2")
- check_variable(FOO_VAR_WITH_LABELS "FooVarWithLabels")
- check_variable(BAR_VAR_WITH_LABELS "BarVarWithLabels")
- check_variable(SuperBuildTest_EP_LABEL_LABEL_A "FOO_VAR_WITH_LABELS")
- check_variable(SuperBuildTest_EP_LABEL_LABEL_B "FOO_VAR_WITH_LABELS;BAR_VAR_WITH_LABELS")
- check_variable(SuperBuildTest_EP_LABEL_FIND_PACKAGE "LibA_DIR")
- get_filename_component(expected_LibA_DIR "${CMAKE_CURRENT_BINARY_DIR}/../LibA-build" REALPATH)
- check_variable(LibA_DIR ${expected_LibA_DIR})
- check_variable(SuperBuildTest_EP_LABEL_USE_SYSTEM
- "${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibA;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibB;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibC;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibD")
- check_variable(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibA "")
- check_variable(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibB "")
- check_variable(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibC 1)
- check_variable(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibD 1)
|