diff --git a/ECMConfig.cmake.in b/ECMConfig.cmake.in --- a/ECMConfig.cmake.in +++ b/ECMConfig.cmake.in @@ -8,4 +8,6 @@ set(ECM_MODULE_PATH "${ECM_MODULE_DIR}" "${ECM_FIND_MODULE_DIR}" "${ECM_KDE_MODULE_DIR}") +set(ECM_GLOBAL_FIND_VERSION "${ECM_FIND_VERSION}") + include("${ECM_MODULE_DIR}/ECMUseFindModules.cmake") diff --git a/kde-modules/KDECMakeSettings.cmake b/kde-modules/KDECMakeSettings.cmake --- a/kde-modules/KDECMakeSettings.cmake +++ b/kde-modules/KDECMakeSettings.cmake @@ -41,7 +41,10 @@ # ~~~~~~~~~~~~~~ # # Various CMake build defaults are altered, such as searching source and build -# directories for includes first and enabling automoc by default. +# directories for includes first, enabling automoc by default. +# +# When find_package(ECM 5.38) or higher is called, this also selects +# a layout for the build dir that helps running executables without installing. # # This section can be disabled by setting ``KDE_SKIP_BUILD_SETTINGS`` to TRUE # before including this module. @@ -244,10 +247,12 @@ # one common directory, and all static|import libraries and plugins # into another one. This way test executables can find their dlls # even without installation. - if(WIN32) - set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + + # We do the same under Unix to make it possible to run tests and apps without installing + if (WIN32 OR "${ECM_GLOBAL_FIND_VERSION}" VERSION_GREATER_EQUAL "5.38.0") + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") endif() if (APPLE)