diff options
-rw-r--r-- | CMakeLists.txt | 3 | ||||
-rw-r--r-- | build_files/cmake/macros.cmake | 6 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_win32.cmake | 37 | ||||
-rw-r--r-- | build_files/windows/configure_msbuild.cmd | 6 | ||||
-rw-r--r-- | build_files/windows/parse_arguments.cmd | 2 | ||||
-rw-r--r-- | build_files/windows/reset_variables.cmd | 2 | ||||
-rw-r--r-- | intern/cycles/CMakeLists.txt | 9 | ||||
-rw-r--r-- | source/creator/CMakeLists.txt | 18 |
8 files changed, 80 insertions, 3 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b9e8317e26..84c47e20b2b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -567,6 +567,9 @@ if(WIN32) option(WINDOWS_USE_VISUAL_STUDIO_FOLDERS "Organize the visual studio project according to source folders." ON) mark_as_advanced(WINDOWS_USE_VISUAL_STUDIO_FOLDERS) + + option(WINDOWS_PYTHON_DEBUG "Include the files needed for debugging python scripts with visual studio 2017+." OFF) + mark_as_advanced(WINDOWS_PYTHON_DEBUG) endif() # avoid using again diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 3dc6f599c69..9d679dc9b8f 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -1195,7 +1195,11 @@ function(delayed_do_install foreach(i RANGE ${n}) list(GET files ${i} f) list(GET destinations ${i} d) - install(FILES ${f} DESTINATION ${targetdir}/${d}) + if(NOT IS_ABSOLUTE ${d}) + install(FILES ${f} DESTINATION ${targetdir}/${d}) + else() + install(FILES ${f} DESTINATION ${d}) + endif() endforeach() endif() endfunction() diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake index 0c1175df39b..b11dbfb8fba 100644 --- a/build_files/cmake/platform/platform_win32.cmake +++ b/build_files/cmake/platform/platform_win32.cmake @@ -606,3 +606,40 @@ if(WITH_CYCLES_OSL) set(WITH_CYCLES_OSL OFF) endif() endif() + +if (WINDOWS_PYTHON_DEBUG) + # Include the system scripts in the blender_python_system_scripts project. + FILE(GLOB_RECURSE inFiles "${CMAKE_SOURCE_DIR}/release/scripts/*.*" ) + ADD_CUSTOM_TARGET(blender_python_system_scripts SOURCES ${inFiles}) + foreach(_source IN ITEMS ${inFiles}) + get_filename_component(_source_path "${_source}" PATH) + string(REPLACE "${CMAKE_SOURCE_DIR}/release/scripts/" "" _source_path "${_source_path}") + string(REPLACE "/" "\\" _group_path "${_source_path}") + source_group("${_group_path}" FILES "${_source}") + endforeach() + # Include the user scripts from the profile folder in the blender_python_user_scripts project. + set(USER_SCRIPTS_ROOT "$ENV{appdata}/blender foundation/blender/${BLENDER_VERSION}") + file(TO_CMAKE_PATH ${USER_SCRIPTS_ROOT} USER_SCRIPTS_ROOT) + FILE(GLOB_RECURSE inFiles "${USER_SCRIPTS_ROOT}/scripts/*.*" ) + ADD_CUSTOM_TARGET(blender_python_user_scripts SOURCES ${inFiles}) + foreach(_source IN ITEMS ${inFiles}) + get_filename_component(_source_path "${_source}" PATH) + string(REPLACE "${USER_SCRIPTS_ROOT}/scripts" "" _source_path "${_source_path}") + string(REPLACE "/" "\\" _group_path "${_source_path}") + source_group("${_group_path}" FILES "${_source}") + endforeach() + set_target_properties(blender_python_system_scripts PROPERTIES FOLDER "scripts") + set_target_properties(blender_python_user_scripts PROPERTIES FOLDER "scripts") + # Set the default debugging options for the project, only write this file once so the user + # is free to override them at their own perril. + set(USER_PROPS_FILE "${CMAKE_CURRENT_BINARY_DIR}/source/creator/blender.Cpp.user.props") + if(NOT EXISTS ${USER_PROPS_FILE}) + # Layout below is messy, because otherwise the generated file will look messy. + file(WRITE ${USER_PROPS_FILE} "<?xml version=\"1.0\" encoding=\"utf-8\"?> +<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"> + <PropertyGroup> + <LocalDebuggerCommandArguments>-con --env-system-scripts \"${CMAKE_SOURCE_DIR}/release/scripts\" </LocalDebuggerCommandArguments> + </PropertyGroup> +</Project>") + endif() +endif() diff --git a/build_files/windows/configure_msbuild.cmd b/build_files/windows/configure_msbuild.cmd index f8c2a87de8e..a0ffe0c58fd 100644 --- a/build_files/windows/configure_msbuild.cmd +++ b/build_files/windows/configure_msbuild.cmd @@ -19,7 +19,11 @@ if "%WITH_CLANG%"=="1" ( exit /b 1 ) ) -set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -G "Visual Studio %BUILD_VS_VER% %BUILD_VS_YEAR%%WINDOWS_ARCH%" %TESTS_CMAKE_ARGS% %CLANG_CMAKE_ARGS% %ASAN_CMAKE_ARGS% + +if "%WITH_PYDEBUG%"=="1" ( + set PYDEBUG_CMAKE_ARGS=-DWINDOWS_PYTHON_DEBUG=On +) +set BUILD_CMAKE_ARGS=%BUILD_CMAKE_ARGS% -G "Visual Studio %BUILD_VS_VER% %BUILD_VS_YEAR%%WINDOWS_ARCH%" %TESTS_CMAKE_ARGS% %CLANG_CMAKE_ARGS% %ASAN_CMAKE_ARGS% %PYDEBUG_CMAKE_ARGS% if NOT EXIST %BUILD_DIR%\nul ( mkdir %BUILD_DIR% diff --git a/build_files/windows/parse_arguments.cmd b/build_files/windows/parse_arguments.cmd index 0b57c77a693..2c80a4d0b02 100644 --- a/build_files/windows/parse_arguments.cmd +++ b/build_files/windows/parse_arguments.cmd @@ -61,6 +61,8 @@ if NOT "%1" == "" ( shift /1 ) else if "%1" == "nobuild" ( set NOBUILD=1 + ) else if "%1" == "pydebug" ( + set WITH_PYDEBUG=1 ) else if "%1" == "showhash" ( SET BUILD_SHOW_HASHES=1 REM Non-Build Commands diff --git a/build_files/windows/reset_variables.cmd b/build_files/windows/reset_variables.cmd index a522ed7407f..ba584a7f34a 100644 --- a/build_files/windows/reset_variables.cmd +++ b/build_files/windows/reset_variables.cmd @@ -25,3 +25,5 @@ set WITH_CLANG= set WITH_ASAN= set CLANG_CMAKE_ARGS= set ASAN_CMAKE_ARGS= +set WITH_PYDEBUG= +set PYDEBUG_CMAKE_ARGS= diff --git a/intern/cycles/CMakeLists.txt b/intern/cycles/CMakeLists.txt index 9a09b1e6f1b..54d14f63cd2 100644 --- a/intern/cycles/CMakeLists.txt +++ b/intern/cycles/CMakeLists.txt @@ -3,7 +3,14 @@ if(NOT WITH_BLENDER AND WITH_CYCLES_STANDALONE) set(CYCLES_INSTALL_PATH "") else() set(WITH_CYCLES_BLENDER ON) - set(CYCLES_INSTALL_PATH "scripts/addons/cycles") + # WINDOWS_PYTHON_DEBUG needs to write into the user addons folder since it will + # be started with --env-system-scripts pointing to the release folder, which will + # lack the cycles addon, and we don't want to write into it. + if(NOT WINDOWS_PYTHON_DEBUG) + set(CYCLES_INSTALL_PATH "scripts/addons/cycles") + else() + set(CYCLES_INSTALL_PATH "$ENV{appdata}/blender foundation/blender/${BLENDER_VERSION}/scripts/addons/cycles") + endif() endif() # External Libraries diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 18a8ebeac37..7d382b0f581 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -747,6 +747,19 @@ elseif(WIN32) DESTINATION ${BLENDER_VERSION}/python/bin CONFIGURATIONS Debug ) + if(WINDOWS_PYTHON_DEBUG) + install( + FILES ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.pdb + DESTINATION "." + CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel + ) + + install( + FILES ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}_d.pdb + DESTINATION "." + CONFIGURATIONS Debug + ) + endif() endif() unset(_PYTHON_VERSION_NO_DOTS) @@ -1006,4 +1019,9 @@ if(WIN32 AND NOT WITH_PYTHON_MODULE) COMPONENT Blender DESTINATION "." ) + set_target_properties( + blender + PROPERTIES + VS_USER_PROPS "blender.Cpp.user.props" + ) endif() |