Browse Source

CMake: Make IDE folder structure mirror disk structure

tags/2021-05-28
reuk 5 years ago
parent
commit
f79c49a171
No known key found for this signature in database GPG Key ID: 9ADCD339CFC98A11
5 changed files with 33 additions and 5 deletions
  1. +4
    -1
      CMakeLists.txt
  2. +2
    -0
      examples/CMakeLists.txt
  3. +3
    -0
      extras/Build/CMake/JUCEConfig.cmake.in
  4. +23
    -4
      extras/Build/CMake/JUCEUtils.cmake
  5. +1
    -0
      extras/CMakeLists.txt

+ 4
- 1
CMakeLists.txt View File

@@ -20,6 +20,9 @@ project(JUCE VERSION 6.0.0 LANGUAGES C CXX)

set_property(GLOBAL PROPERTY USE_FOLDERS YES)

set(JUCE_MODULES_DIR "${JUCE_SOURCE_DIR}/modules" CACHE INTERNAL
"The path to JUCE modules")

include(extras/Build/CMake/JUCEHelperTargets.cmake)
include(extras/Build/CMake/JUCEUtils.cmake)

@@ -97,7 +100,7 @@ configure_package_config_file("${JUCE_CMAKE_UTILS_DIR}/JUCEConfig.cmake.in"
INSTALL_DESTINATION "${JUCE_INSTALL_DESTINATION}")

set(JUCE_EXPORT_FILE_NAME "JUCEBuildTree.cmake")
set(JUCE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/modules")
set(JUCE_MODULE_PATH "${JUCE_MODULES_DIR}")
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)


+ 2
- 0
examples/CMakeLists.txt View File

@@ -14,6 +14,8 @@
#
# ==============================================================================

set(CMAKE_FOLDER examples)

add_subdirectory(CMake)
add_subdirectory(DemoRunner)



+ 3
- 0
extras/Build/CMake/JUCEConfig.cmake.in View File

@@ -30,6 +30,9 @@ endif()

check_required_components("@PROJECT_NAME@")

set(JUCE_MODULES_DIR "@PACKAGE_JUCE_MODULE_PATH@" CACHE INTERNAL
"The path to JUCE modules")

include("@PACKAGE_UTILS_INSTALL_DIR@/JUCEUtils.cmake")

set(_juce_modules


+ 23
- 4
extras/Build/CMake/JUCEUtils.cmake View File

@@ -497,8 +497,6 @@ function(juce_add_module module_path)
endif()
endif()

source_group(Modules FILES ${all_module_sources})

if(${module_name} STREQUAL "juce_audio_processors")
add_library(juce_vst3_headers INTERFACE)
target_include_directories(juce_vst3_headers INTERFACE
@@ -1321,6 +1319,19 @@ function(_juce_set_plugin_target_properties shared_code_target kind)
endif()
endfunction()

# Place plugin wrapper targets alongside the shared code target in IDEs
function(_juce_set_plugin_folder_property shared_target wrapper_target)
get_target_property(folder_to_use "${shared_target}" FOLDER)

if(folder_to_use STREQUAL "folder_to_use-NOTFOUND")
set(folder_to_use "${shared_target}")
else()
set(folder_to_use "${folder_to_use}/${shared_target}")
endif()

set_target_properties("${wrapper_target}" PROPERTIES FOLDER "${folder_to_use}")
endfunction()

# Convert the cmake plugin kind ids to strings understood by ProjectType::Target::typeFromName
function(_juce_get_plugin_kind_name kind out_var)
if(kind STREQUAL "AU")
@@ -1367,6 +1378,8 @@ function(_juce_link_plugin_wrapper shared_code_target kind)

_juce_set_output_name(${target_name} $<TARGET_PROPERTY:${shared_code_target},JUCE_PRODUCT_NAME>)

_juce_set_plugin_folder_property("${shared_code_target}" "${target_name}")

_juce_get_plugin_kind_name(${kind} juce_kind_string)
set_target_properties(${target_name} PROPERTIES
XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME NO
@@ -1375,7 +1388,6 @@ function(_juce_link_plugin_wrapper shared_code_target kind)
VISIBILITY_INLINES_HIDDEN TRUE
C_VISIBILITY_PRESET hidden
CXX_VISIBILITY_PRESET hidden
FOLDER ${shared_code_target}
JUCE_TARGET_KIND_STRING "${juce_kind_string}")
add_dependencies(${shared_code_target}_All ${target_name})

@@ -1523,7 +1535,7 @@ function(_juce_configure_plugin_targets target)

# A convenience target for building all plugin variations at once
add_custom_target(${target}_All)
set_target_properties(${target}_All PROPERTIES FOLDER ${target})
_juce_set_plugin_folder_property("${target}" "${target}_All")

_juce_get_platform_plugin_kinds(plugin_kinds)

@@ -1926,6 +1938,13 @@ function(_juce_initialise_target target)

_juce_write_generate_time_info(${target})
_juce_link_optional_libraries(${target})

file(GLOB juce_module_folders RELATIVE "${JUCE_MODULES_DIR}" "${JUCE_MODULES_DIR}/*")

foreach(module_folder IN LISTS juce_module_folders)
file(GLOB_RECURSE juce_module_files "${JUCE_MODULES_DIR}/${module_folder}/*")
source_group(TREE "${JUCE_MODULES_DIR}" PREFIX "Modules" FILES ${juce_module_files})
endforeach()
endfunction()

# ==================================================================================================


+ 1
- 0
extras/CMakeLists.txt View File

@@ -14,6 +14,7 @@
#
# ==============================================================================

set(CMAKE_FOLDER extras)
add_subdirectory(AudioPerformanceTest)
add_subdirectory(AudioPluginHost)
add_subdirectory(BinaryBuilder)


Loading…
Cancel
Save