diff --git a/CMakeLists.txt b/CMakeLists.txt
index 47756e137971d931b9ac37c98ded771e2761a5a5..5e223ae26e39cb15c6b5e3a1365073f2fc56c65b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,6 +20,7 @@
 # THE SOFTWARE.
 
 cmake_minimum_required(VERSION 3.16)
+enable_testing()
 include(cmake/sbs.cmake)
 
 #-----------------------------------------------------------------------------#
@@ -103,7 +104,7 @@ add_executable(catch-tests-entry
 )
 target_compile_definitions(catch-tests-entry PUBLIC USE_MOCK_PERIPHERALS)
 sbs_target(catch-tests-entry stm32f429zi_stm32f4discovery)
-#catch_discover_tests(catch-tests-entry)
+sbs_catch_test(catch-tests-entry)
 
 #-----------------------------------------------------------------------------#
 #                               Tests - Drivers                               #
diff --git a/cmake/sbs.cmake b/cmake/sbs.cmake
index b5d330c1860622260e174b0d454218a750b4a81e..17f5f3ef5c0d2372ece9d4d751a70e248268806e 100644
--- a/cmake/sbs.cmake
+++ b/cmake/sbs.cmake
@@ -46,12 +46,22 @@ function(sbs_target TARGET OPT_BOARD)
         message(FATAL_ERROR "No board selected")
     endif()
     target_include_directories(${TARGET} PRIVATE src/shared)
-    target_link_libraries(${TARGET} PRIVATE SkywardBoardcore::Boardcore-${OPT_BOARD})
-    add_custom_command(
-        TARGET ${TARGET} POST_BUILD
-        COMMAND ${CMAKE_OBJCOPY} -O ihex ${TARGET} ${TARGET}.hex
-        COMMAND ${CMAKE_OBJCOPY} -O binary ${TARGET} ${TARGET}.bin
-        BYPRODUCTS ${TARGET}.hex ${TARGET}.bin
-        VERBATIM
-    )
+    if(CMAKE_CROSSCOMPILING)
+        target_link_libraries(${TARGET} PRIVATE SkywardBoardcore::Boardcore-${OPT_BOARD})
+        add_custom_command(
+            TARGET ${TARGET} POST_BUILD
+            COMMAND ${CMAKE_OBJCOPY} -O ihex ${TARGET} ${TARGET}.hex
+            COMMAND ${CMAKE_OBJCOPY} -O binary ${TARGET} ${TARGET}.bin
+            BYPRODUCTS ${TARGET}.hex ${TARGET}.bin
+            VERBATIM
+        )
+    else()
+        target_link_libraries(${TARGET} PRIVATE SkywardBoardcore::Boardcore-host)
+    endif()
+endfunction()
+
+function(sbs_catch_test TARGET)
+    if(NOT CMAKE_CROSSCOMPILING)
+        catch_discover_tests(${TARGET})
+    endif()
 endfunction()