From a6ca2c335d9791565ca679e69f5aedd338cdce7d Mon Sep 17 00:00:00 2001
From: Soeren Peters <peters@irmb.tu-bs.de>
Date: Fri, 21 Aug 2020 17:05:50 +0200
Subject: [PATCH] Set CMake Output directories for runtime, library, archive
 and pdb files for all libraries and executuables.

---
 CMake/VirtualFluidsMacros.cmake | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/CMake/VirtualFluidsMacros.cmake b/CMake/VirtualFluidsMacros.cmake
index ab37d4263..5b059d4fe 100644
--- a/CMake/VirtualFluidsMacros.cmake
+++ b/CMake/VirtualFluidsMacros.cmake
@@ -106,6 +106,14 @@ function(vf_add_library)
         MESSAGE(FATAL_ERROR "build_type=${ARG_BUILDTYPE} doesn't match BINARY, SHARED or STATIC")
     ENDIF()
 
+    # Set the output directory for build artifacts
+    set_target_properties(${library_name}
+            PROPERTIES
+            RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
+            LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+            ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+            PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
+
     #################################################################
     ###   ADDITIONAL LINK LIBRARIES                               ###
     #################################################################
@@ -193,6 +201,14 @@ function(vf_add_tests)
     add_executable(${library_test_name} ${MY_SRCS})
     groupTarget (${library_test_name} ${testFolder})
 
+    # Set the output directory for build artifacts
+    set_target_properties(${library_test_name}
+            PROPERTIES
+            RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
+            LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+            ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+            PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
+
     # link tested library
     target_link_libraries(${library_test_name} PRIVATE ${folder_name})
 
-- 
GitLab