From 0b4089c951a5b4ca2353e47f508ca7ff4fe98023 Mon Sep 17 00:00:00 2001 From: reuk Date: Sun, 19 Apr 2020 19:22:24 +0100 Subject: [PATCH] CMake: Allow build tree to be used as a pseudo-install-tree Once JUCE has been built, you can use the following line to include the targets from the build tree (replace `JUCE_BUILD_DIR` as appropriate). ``` include("${JUCE_BUILD_DIR}/JUCEExportConfig.cmake") ``` --- CMakeLists.txt | 15 ++++++++++++++- extras/Build/CMake/JUCEConfig.cmake.in | 16 +++------------- extras/Build/juceaide/CMakeLists.txt | 3 +-- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e5e5423d9b5..282729621196 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,11 +80,24 @@ set(JUCE_INSTALL_DESTINATION "lib/cmake/JUCE-${JUCE_VERSION}" CACHE STRING "The location, relative to the install prefix, where the JUCE config file will be installed") install(EXPORT JUCE NAMESPACE juce:: DESTINATION "${JUCE_INSTALL_DESTINATION}") - +set(JUCE_EXPORT_FILE_NAME "JUCE.cmake") +set(UTILS_INSTALL_DIR "${JUCE_INSTALL_DESTINATION}") +set(JUCEAIDE_PATH "${JUCE_TOOL_INSTALL_DIR}/${JUCE_JUCEAIDE_NAME}") configure_package_config_file("${JUCE_CMAKE_UTILS_DIR}/JUCEConfig.cmake.in" "${JUCE_BINARY_DIR}/JUCEConfig.cmake" + PATH_VARS UTILS_INSTALL_DIR JUCEAIDE_PATH INSTALL_DESTINATION "${JUCE_INSTALL_DESTINATION}") +set(JUCE_EXPORT_FILE_NAME "JUCEBuildTree.cmake") +export(EXPORT JUCE NAMESPACE juce:: FILE "${JUCE_EXPORT_FILE_NAME}") +set(UTILS_INSTALL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extras/Build/CMake") +get_target_property(JUCEAIDE_PATH juceaide IMPORTED_LOCATION) +configure_package_config_file("${JUCE_CMAKE_UTILS_DIR}/JUCEConfig.cmake.in" + "${JUCE_BINARY_DIR}/JUCEExportConfig.cmake" + PATH_VARS UTILS_INSTALL_DIR JUCEAIDE_PATH + INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}" + INSTALL_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}") + install(FILES "${JUCE_BINARY_DIR}/JUCEConfigVersion.cmake" "${JUCE_BINARY_DIR}/JUCEConfig.cmake" "${JUCE_CMAKE_UTILS_DIR}/LaunchScreen.storyboard" diff --git a/extras/Build/CMake/JUCEConfig.cmake.in b/extras/Build/CMake/JUCEConfig.cmake.in index b9b25ec64c24..5207058d9214 100644 --- a/extras/Build/CMake/JUCEConfig.cmake.in +++ b/extras/Build/CMake/JUCEConfig.cmake.in @@ -20,24 +20,14 @@ @PACKAGE_INIT@ -include("${CMAKE_CURRENT_LIST_DIR}/JUCE.cmake") - -get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) -if(_IMPORT_PREFIX STREQUAL "/") - set(_IMPORT_PREFIX "") -endif() +include("${CMAKE_CURRENT_LIST_DIR}/@JUCE_EXPORT_FILE_NAME@") if(NOT TARGET juce::juceaide) add_executable(juce::juceaide IMPORTED) set_target_properties(juce::juceaide PROPERTIES - IMPORTED_LOCATION "${_IMPORT_PREFIX}/@JUCE_CMAKE_BINARY_BUILDER_NAME@") + IMPORTED_LOCATION "@PACKAGE_JUCEAIDE_PATH@") endif() -set(_IMPORT_PREFIX) - check_required_components("@PROJECT_NAME@") -include("${CMAKE_CURRENT_LIST_DIR}/JUCEUtils.cmake") +include("@PACKAGE_UTILS_INSTALL_DIR@/JUCEUtils.cmake") diff --git a/extras/Build/juceaide/CMakeLists.txt b/extras/Build/juceaide/CMakeLists.txt index bcb648fa0ae6..1c0748b7f3d4 100644 --- a/extras/Build/juceaide/CMakeLists.txt +++ b/extras/Build/juceaide/CMakeLists.txt @@ -85,6 +85,5 @@ else() install(PROGRAMS "${imported_location}" DESTINATION "${JUCE_TOOL_INSTALL_DIR}") get_filename_component(binary_name "${imported_location}" NAME) - set(JUCE_CMAKE_BINARY_BUILDER_NAME "${JUCE_TOOL_INSTALL_DIR}/${binary_name}" - CACHE INTERNAL "The name of the juceaide program") + set(JUCE_JUCEAIDE_NAME "${binary_name}" CACHE INTERNAL "The name of the juceaide program") endif()