diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0510cd2d7..84fa35e2e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,18 +42,7 @@ function(CREATE_TARGET target)
     ${target} ALL
     COMMAND
       "${CMAKE_COMMAND}" -E
-        env ${VARS_FOR_CARGO}
-          ${Rust_CARGO}
-            build --bin ${target}
-            $<$<CONFIG:Release>:--release>
-            $<$<CONFIG:RelWithDebInfo>:--profile=release-with-debug>
-            --target ${Rust_CARGO_TARGET}
-            --no-default-features
-            ${CARGO_FLAGS}
-            ${FEATURES_ARG}
-      &&
-      "${CMAKE_COMMAND}" -E
-        copy "${rust_target_dir}/${rust_profile}/${target}" "${CMAKE_CURRENT_BINARY_DIR}"
+        copy "${FISH_RUST_BUILD_DIR}/${rust_profile}/${target}" "${CMAKE_CURRENT_BINARY_DIR}"
     WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
     USES_TERMINAL
   )
diff --git a/cmake/Rust.cmake b/cmake/Rust.cmake
index 9cdd01c30..5c554dd2d 100644
--- a/cmake/Rust.cmake
+++ b/cmake/Rust.cmake
@@ -1,7 +1,7 @@
 include(FindRust)
 find_package(Rust REQUIRED)
 
-set(FISH_RUST_BUILD_DIR "${CMAKE_BINARY_DIR}/cargo/build")
+set(FISH_RUST_BUILD_DIR "${CMAKE_SOURCE_DIR}/target")
 
 if(DEFINED ASAN)
     list(APPEND CARGO_FLAGS "-Z" "build-std")
@@ -18,8 +18,8 @@ else()
     set(rust_target_dir "${FISH_RUST_BUILD_DIR}/${Rust_CARGO_HOST_TARGET}")
 endif()
 
-set(rust_profile $<IF:$<CONFIG:Debug>,debug,$<IF:$<CONFIG:RelWithDebInfo>,release-with-debug,release>>)
-set(rust_debugflags "$<$<CONFIG:Debug>:-g>$<$<CONFIG:RelWithDebInfo>:-g>")
+set(rust_profile $<IF:$<CONFIG:Debug>,debug,release>)
+set(rust_debugflags "$<$<CONFIG:Debug>:-g>")
 
 
 # Temporary hack to propagate CMake flags/options to build.rs. We need to get CMake to evaluate the
