diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8f1d7ed59c19e86e398f2bcee8a354beda5a66af..f752552b6393f2ea3dbafd0c9dd6bd1c051ef08f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,15 +2,6 @@ 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)
 
 cmake_policy(SET CMP0100 NEW)
@@ -26,6 +17,30 @@ include(FindOpenMP)      # Test OpenMP support
 include(GNUInstallDirs)  # Needed for installation things
 include(ExternalProject) # Enable ExternalProject CMake module
 
+###           ###
+# FIND PROGRAMS #
+###           ###
+
+find_program(MKVPROPEDIT mkvpropedit REQUIRED)   # To DL karas and apply metadata
+find_program(XXD         xxd         REQUIRED)   # To embed the sqlite db schemas into the binary
+find_program(CARGO       cargo       REQUIRED)   # For rust things
+
+if(CMAKE_RUST_COMPILER)
+    message(STATUS "Override cargo path: ${CMAKE_RUST_COMPILER}")
+    set(CARGO "${CMAKE_RUST_COMPILER}")
+else()
+    message(STATUS "Using cargo: ${CARGO}")
+endif()
+
+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()
+
 ###         ###
 # TEST OPENMP #
 ###         ###
@@ -107,17 +122,6 @@ set(CMAKE_AUTOUIC ON)
 set(CMAKE_AUTOMOC ON)
 set(CMAKE_AUTORCC ON)
 
-find_program(MKVPROPEDIT mkvpropedit REQUIRED)   # To DL karas and apply metadata
-find_program(XXD         xxd         REQUIRED)   # To embed the sqlite db schemas into the binary
-find_program(CARGO       cargo       REQUIRED)   # For rust things
-
-if(CMAKE_RUST_COMPILER)
-    message(STATUS "Override cargo path: ${CMAKE_RUST_COMPILER}")
-    set(CARGO "${CMAKE_RUST_COMPILER}")
-else()
-    message(STATUS "Using cargo: ${CARGO}")
-endif()
-
 message(STATUS "The installation prefix is ${CMAKE_INSTALL_PREFIX}")
 
 TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
@@ -341,6 +345,7 @@ set_directory_properties(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/Rust)
 ExternalProject_Add(amadeus_rs
     DOWNLOAD_COMMAND  ""
     CONFIGURE_COMMAND ""
+    INSTALL_COMMAND   ""
     SOURCE_DIR        "${CMAKE_SOURCE_DIR}/src/rust/amadeus-rs"
     BUILD_COMMAND     ${RUST_BUILD_CMD}
     COMMAND           ${RUST_BUILD_CMD}
@@ -349,17 +354,16 @@ ExternalProject_Add(amadeus_rs
     BUILD_IN_SOURCE   1
 )
 
-install(PROGRAMS "${CMAKE_SOURCE_DIR}/src/rust/target/${RUST_BUILD_TYPE}/amadeus" TYPE BIN)
-
 ExternalProject_Add(liblektor_rs
     DOWNLOAD_COMMAND  ""
     CONFIGURE_COMMAND ""
+    INSTALL_COMMAND   ""
     SOURCE_DIR        "${CMAKE_SOURCE_DIR}/src/rust/liblektor-rs"
     BUILD_COMMAND     ${RUST_BUILD_CMD}
     COMMAND           ${RUST_BUILD_CMD}
-    INSTALL_COMMAND   ""
     BUILD_BYPRODUCTS  "${CMAKE_SOURCE_DIR}/src/rust/target/${RUST_BUILD_TYPE}/liblektor_rs.a"
     BUILD_ALWAYS      1
+    BUILD_IN_SOURCE   1
 )
 
 add_dependencies(lektord liblektor_rs)
@@ -374,6 +378,8 @@ target_link_libraries(lektord
 # THE INSTALL DIRECTIVES #
 ###                    ###
 
+install(PROGRAMS "${CMAKE_SOURCE_DIR}/src/rust/target/${RUST_BUILD_TYPE}/amadeus" TYPE BIN)
+
 install(TARGETS lektord lkt
     RUNTIME # For lektord
     RUNTIME # For lkt