diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1e46f5dc37fb5b650165ef49004b5f5177511483..480baa7ef95f7f68e16e2111d03f3bdc3d4f4217 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -131,4 +131,5 @@ set(CPACK_PACKAGE_VERSION_MAJOR ${SRB2_VERSION_MAJOR})
 set(CPACK_PACKAGE_VERSION_MINOR ${SRB2_VERSION_MINOR})
 set(CPACK_PACKAGE_VERSION_PATCH ${SRB2_VERSION_PATCH})
 set(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMAKE_VERSION_MAJOR}.${CMAKE_VERSION_MINOR}")
+SET(CPACK_OUTPUT_FILE_PREFIX package)
 include(CPack)
diff --git a/assets/CMakeLists.txt b/assets/CMakeLists.txt
index 095349418ed8901e94ddc229b4cf71d11927e07b..3ea7c28dfb0b950b34b46d2866001ce2d2017380 100644
--- a/assets/CMakeLists.txt
+++ b/assets/CMakeLists.txt
@@ -12,6 +12,9 @@ ENDFUNCTION(PREPEND)
 set(SRB2_ASSET_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/installer"
 	CACHE STRING "Path to directory that contains all asset files for the installer.")
 
+set(SRB2_ASSET_INSTALL ON
+	CACHE BOOL "Insert asset files into the install directory or package.")
+
 ####################
 # POST-V2.2 NOTE: Do not forget to add patch.pk3 to the end of this list!
 ####################
@@ -43,20 +46,27 @@ endforeach()
 
 if(${CMAKE_SYSTEM} MATCHES Darwin)
 	get_target_property(outname SRB2SDL2 OUTPUT_NAME)
-	install(DIRECTORY "${SRB2_ASSET_DIRECTORY}/"
-		DESTINATION "${outname}.app/Contents/Resources"
-	)
+	if(${SRB2_ASSET_INSTALL})
+		install(DIRECTORY "${SRB2_ASSET_DIRECTORY}/"
+			DESTINATION "${outname}.app/Contents/Resources"
+		)
+	endif()
+	# Always install the doc files, even in non-asset packages.
 	install(FILES ${SRB2_ASSET_DOCS}
 		DESTINATION .
 		OPTIONAL
 	)
 else()
-	install(DIRECTORY "${SRB2_ASSET_DIRECTORY}/"
-		DESTINATION .
-	)
-	# Docs are assumed to be located in SRB2_ASSET_DIRECTORY, so don't install again
-	#install(FILES ${SRB2_ASSET_DOCS}
-	#	DESTINATION .
-	#	OPTIONAL
-	#)
+	if(${SRB2_ASSET_INSTALL})
+		install(DIRECTORY "${SRB2_ASSET_DIRECTORY}/"
+			DESTINATION .
+		)
+		# Docs are assumed to be located in SRB2_ASSET_DIRECTORY, so don't install them in their own call.
+	else()
+		# Always install the doc files, even in non-asset packages.
+		install(FILES ${SRB2_ASSET_DOCS}
+			DESTINATION .
+			OPTIONAL
+		)
+	endif()
 endif()
diff --git a/src/sdl/CMakeLists.txt b/src/sdl/CMakeLists.txt
index d5a5fc950abf500e7cf7471ae0247a4e06cff050..1e3d0f7a6ab968037b5969c714ebfad4760ee81e 100644
--- a/src/sdl/CMakeLists.txt
+++ b/src/sdl/CMakeLists.txt
@@ -269,14 +269,18 @@ if(${SDL2_FOUND})
 		-DHAVE_SDL
 	)
 
-	## strip debug symbols into separate file when using gcc
-	if(CMAKE_COMPILER_IS_GNUCC)
-		if(${CMAKE_BUILD_TYPE} MATCHES Debug)
+	## strip debug symbols into separate file when using gcc.
+	## to be consistent with Makefile, don't generate for OS X.
+	if((CMAKE_COMPILER_IS_GNUCC) AND NOT (${CMAKE_SYSTEM} MATCHES Darwin))
+		if((${CMAKE_BUILD_TYPE} MATCHES Debug) OR (${CMAKE_BUILD_TYPE} MATCHES RelWithDebInfo))
+			if(${CMAKE_BUILD_TYPE} MATCHES Debug)
+				set(OBJCOPY_ONLY_KEEP_DEBUG "--only-keep-debug")
+			endif()
 			message(STATUS "Will make separate debug symbols in *.debug")
 			add_custom_command(TARGET SRB2SDL2 POST_BUILD
-				COMMAND ${OBJCOPY} --only-keep-debug $<TARGET_FILE:SRB2SDL2> $<TARGET_FILE:SRB2SDL2>.debug
+				COMMAND ${OBJCOPY} ${OBJCOPY_ONLY_KEEP_DEBUG} $<TARGET_FILE:SRB2SDL2> $<TARGET_FILE:SRB2SDL2>.debug
 				COMMAND ${OBJCOPY} --strip-debug $<TARGET_FILE:SRB2SDL2>
-				COMMAND ${OBJCOPY} --add-gnu-debuglink=$<TARGET_FILE_NAME:SRB2SDL2>.debug $<TARGET_FILE:SRB2SDL2>
+				COMMAND ${OBJCOPY} --add-gnu-debuglink=$<TARGET_FILE:SRB2SDL2>.debug $<TARGET_FILE:SRB2SDL2>
 			)
 		endif()
 	endif()
@@ -290,6 +294,12 @@ if(${SDL2_FOUND})
 		install(TARGETS SRB2SDL2 SRB2SDL2
 			RUNTIME DESTINATION .
 		)
+		if ((${CMAKE_BUILD_TYPE} MATCHES Debug) OR (${CMAKE_BUILD_TYPE} MATCHES RelWithDebInfo))
+			install(FILES $<TARGET_FILE:SRB2SDL2>.debug
+				DESTINATION .
+				OPTIONAL
+			)
+		endif()
 	endif()
 
 	if(${CMAKE_SYSTEM} MATCHES Windows)