diff --git a/CMakeLists.txt b/CMakeLists.txt
index dc146d1..9b82544 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -140,7 +140,7 @@ get_git_head_revision(GIT_REFSPEC GIT_SHA1)
 
 configure_file(
   "${PROJECT_SOURCE_DIR}/gitsha.cpp.in"
-  "${PROJECT_SOURCE_DIR}/pdal/gitsha.cpp")
+  "${PROJECT_BINARY_DIR}/pdal/gitsha.cpp")
 
 # needs to come before configuration of pdal_features
 if(APPLE)
@@ -201,6 +201,7 @@ file(GLOB BASE_SRCS
     ${PDAL_IO_DIR}/*.cpp
     ${PDAL_KERNELS_DIR}/*.cpp
     ${PDAL_SRC_DIR}/*.cpp
+    ${PROJECT_BINARY_DIR}/pdal/gitsha.cpp
     ${PDAL_SRC_DIR}/compression/*.cpp)
 file(GLOB_RECURSE PRIVATE_SRCS
     ${PDAL_FILTERS_DIR}/private/*.cpp
diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt
index b02aa4a..d60b041 100644
--- a/apps/CMakeLists.txt
+++ b/apps/CMakeLists.txt
@@ -66,9 +66,9 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pdal.pc
 if(UNIX OR APPLE)
     # Autoconf compatibility variables to use the same script source.
     configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pdal-config.in"
-                   "${CMAKE_CURRENT_SOURCE_DIR}/pdal-config" @ONLY)
+                   "${CMAKE_CURRENT_BINARY_DIR}/pdal-config" @ONLY)
 
-    file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/pdal-config"
+    file(COPY "${CMAKE_CURRENT_BINARY_DIR}/pdal-config"
         DESTINATION
             "${PDAL_OUTPUT_BIN_DIR}/"
         FILE_PERMISSIONS
@@ -85,9 +85,9 @@ if(UNIX OR APPLE)
 elseif(WIN32)
     # Autoconf compatibility variables to use the same script source.
     configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pdal-config-bat.in"
-                   "${CMAKE_CURRENT_SOURCE_DIR}/pdal-config.bat" @ONLY)
+                   "${CMAKE_CURRENT_BINARY_DIR}/pdal-config.bat" @ONLY)
 
-    file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/pdal-config.bat"
+    file(COPY "${CMAKE_CURRENT_BINARY_DIR}/pdal-config.bat"
          DESTINATION
             "${PDAL_OUTPUT_BIN_DIR}/"
          FILE_PERMISSIONS