diff --git a/CMakeLists.txt b/CMakeLists.txt
index af0486b9b079b5b3f4c1210e3f252727bd0c26fc..5a61fd269acc4e1ecfece7371dba3f5ccc9ef6a8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,7 +3,12 @@ cmake_minimum_required(VERSION 3.17)
 set(LKT_VERSION 2.4)
 
 if(CMAKE_BUILD_TYPE STREQUAL "Release")
+    set(RUST_BUILD_TYPE  "release")
+    set(RUST_BUILD_CMD   "${CARGO}" build --release)
     set(CMAKE_BUILD_TYPE RelWithDebInfo)
+else()
+    set(RUST_BUILD_TYPE  "debug")
+    set(RUST_BUILD_CMD   "${CARGO}" build)
 endif()
 
 project(lektor VERSION ${LKT_VERSION} LANGUAGES C CXX)
@@ -77,6 +82,7 @@ set(Clang_CXX_FLAGS
     $<$<COMPILE_LANGUAGE:CXX>:-Wno-inconsistent-missing-override>
     $<$<COMPILE_LANGUAGE:CXX>:-Wno-suggest-override>
     $<$<COMPILE_LANGUAGE:CXX>:-Wno-deprecated-declaration>
+    $<$<COMPILE_LANGUAGE:CXX>:-Wno-missing-prototypes>
 )
 set(GNU_C_FLAGS
     -fdiagnostics-color=always
@@ -89,8 +95,8 @@ set(GNU_C_FLAGS
 find_library(MPV_LIBRARY        mpv                   REQUIRED)                   # tested with 0.32.0
 find_library(SQLITE3_LIBRARY    sqlite3               REQUIRED version>=3.31.0)   # tested with 3.34.1
 
-find_package(SDL2                                     REQUIRED version>=2.0)      # tested with 2.0.14
-find_package(SDL2_image                               REQUIRED version>=2.0)      # same as above ^
+find_package(SDL2                                     REQUIRED)                   # tested with 2.0.14
+find_package(SDL2_image                               REQUIRED)                   # same as above ^
 find_package(CURL                                     REQUIRED HTTP HTTPS)        # tested with 7.74.0
 find_package(QT NAMES Qt6 Qt5      COMPONENTS Widgets REQUIRED)
 find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
@@ -359,23 +365,25 @@ ExternalProject_Add(amadeus_rs
     DOWNLOAD_COMMAND  ""
     CONFIGURE_COMMAND ""
     SOURCE_DIR        "${CMAKE_SOURCE_DIR}/src/rust/amadeus-rs"
-    BUILD_COMMAND     "${CARGO}" build
-    COMMAND           "${CARGO}" build
-    INSTALL_COMMAND   ""
-    BUILD_BYPRODUCTS  "${CMAKE_SOURCE_DIR}/src/rust/target/debug/amadeus"
+    BUILD_COMMAND     ${RUST_BUILD_CMD}
+    COMMAND           ${RUST_BUILD_CMD}
+    BUILD_BYPRODUCTS  "${CMAKE_SOURCE_DIR}/src/rust/target/${RUST_BUILD_TYPE}/amadeus"
     BUILD_ALWAYS      1
     BUILD_IN_SOURCE   1
     LOG_BUILD         1
+    LOG_INSTALL       1
 )
 
+install(PROGRAMS "${CMAKE_SOURCE_DIR}/src/rust/target/${RUST_BUILD_TYPE}/amadeus" TYPE BIN)
+
 ExternalProject_Add(liblektor_rs
     DOWNLOAD_COMMAND  ""
     CONFIGURE_COMMAND ""
     SOURCE_DIR        "${CMAKE_SOURCE_DIR}/src/rust/liblektor-rs"
-    BUILD_COMMAND     "${CARGO}" build
-    COMMAND           "${CARGO}" build
+    BUILD_COMMAND     ${RUST_BUILD_CMD}
+    COMMAND           ${RUST_BUILD_CMD}
     INSTALL_COMMAND   ""
-    BUILD_BYPRODUCTS  "${CMAKE_SOURCE_DIR}/src/rust/target/debug/liblektor_rs.a"
+    BUILD_BYPRODUCTS  "${CMAKE_SOURCE_DIR}/src/rust/target/${RUST_BUILD_TYPE}/liblektor_rs.a"
     BUILD_ALWAYS      1
     BUILD_IN_SOURCE   1
     LOG_BUILD         1
@@ -385,7 +393,7 @@ add_dependencies(lektord liblektor_rs)
 
 target_link_libraries(lektord
     PRIVATE
-    "${CMAKE_SOURCE_DIR}/src/rust/target/debug/liblektor_rs.a"
+    "${CMAKE_SOURCE_DIR}/src/rust/target/${RUST_BUILD_TYPE}/liblektor_rs.a"
     Qt${QT_VERSION_MAJOR}::Widgets
 )