diff --git a/Ladybird/CMakeLists.txt b/Ladybird/CMakeLists.txt index 23def84cfc2..2a52717bf08 100644 --- a/Ladybird/CMakeLists.txt +++ b/Ladybird/CMakeLists.txt @@ -188,7 +188,7 @@ function(set_helper_process_properties) # Store helper processes in the same bundle directory as the main application set_target_properties(${targets} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "$") else() - set_target_properties(${targets} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBEXECDIR}") + set_target_properties(${targets} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${IN_BUILD_PREFIX}${CMAKE_INSTALL_LIBEXECDIR}") if (NOT CMAKE_INSTALL_LIBEXECDIR STREQUAL "libexec") set_source_files_properties(Utilities.cpp PROPERTIES COMPILE_DEFINITIONS LADYBIRD_LIBEXECDIR="${CMAKE_INSTALL_LIBEXECDIR}") @@ -257,7 +257,7 @@ create_ladybird_bundle(ladybird) set_helper_process_properties(${ladybird_helper_processes}) include(cmake/ResourceFiles.cmake) -set(resource_base_dir "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Lagom") +set(resource_base_dir "${CMAKE_BINARY_DIR}/${IN_BUILD_PREFIX}${CMAKE_INSTALL_DATADIR}/Lagom") if (APPLE) set(resource_base_dir "$/Contents/Resources") endif() diff --git a/Meta/CMake/lagom_install_options.cmake b/Meta/CMake/lagom_install_options.cmake index b9e3baaa666..0c29e14ec8e 100644 --- a/Meta/CMake/lagom_install_options.cmake +++ b/Meta/CMake/lagom_install_options.cmake @@ -8,11 +8,18 @@ endif() include(GNUInstallDirs) # make sure to include before we mess w/RPATH +# Handle multi-config generators (e.g. MSVC, Xcode, Ninja Multi-Config) +get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +set(IN_BUILD_PREFIX "") +if (is_multi_config) + set(IN_BUILD_PREFIX "$/") +endif() + # Mirror the structure of the installed tree to ensure that rpaths # always remain valid. -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}") -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}") -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${IN_BUILD_PREFIX}${CMAKE_INSTALL_BINDIR}") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${IN_BUILD_PREFIX}${CMAKE_INSTALL_LIBDIR}") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${IN_BUILD_PREFIX}${CMAKE_INSTALL_LIBDIR}") set(CMAKE_SKIP_BUILD_RPATH FALSE) set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)