Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Molenkamp <github@lazydodo.com>2020-12-03 21:00:58 +0300
committerRay Molenkamp <github@lazydodo.com>2020-12-03 21:00:58 +0300
commitf637b47064237683343f00190a1438638058e92e (patch)
tree138ef03a813db5b465a458e72c76e105d58a2321
parent769818f7f44341511f17925f41535a06f2224558 (diff)
MSVC: Enable clang-tidy analyser
This enables the use of clang-tidy in the VS IDE. To use it: 1 - Enable WITH_CLANG_TIDY in your cmake configuration 2 - From the Analyse pull down menu select Run Code Analysis on... The analyser is currently not enabled by default on build given it is quite slow and there are quite a few problems it reports that we still need to deal with.
-rw-r--r--CMakeLists.txt4
-rw-r--r--build_files/cmake/platform/platform_win32.cmake17
-rw-r--r--source/CMakeLists.txt2
3 files changed, 19 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 81fe4739da4..0d7cf4e325c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -427,8 +427,8 @@ mark_as_advanced(WITH_CXX_GUARDEDALLOC)
option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" ON)
mark_as_advanced(WITH_ASSERT_ABORT)
-if(UNIX AND NOT APPLE)
- option(WITH_CLANG_TIDY "Use Clang Tidy to analyze the source code (only enable for development on Linux using Clang)" OFF)
+if((UNIX AND NOT APPLE) OR (CMAKE_GENERATOR MATCHES "^Visual Studio.+"))
+ option(WITH_CLANG_TIDY "Use Clang Tidy to analyze the source code (only enable for development on Linux using Clang, or Windows using the Visual Studio IDE)" OFF)
mark_as_advanced(WITH_CLANG_TIDY)
endif()
diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake
index 3954a5f143c..dd8b286c689 100644
--- a/build_files/cmake/platform/platform_win32.cmake
+++ b/build_files/cmake/platform/platform_win32.cmake
@@ -239,9 +239,24 @@ if(NOT EXISTS "${LIBDIR}/")
message(FATAL_ERROR "\n\nWindows requires pre-compiled libs at: '${LIBDIR}'. Please run `make update` in the blender source folder to obtain them.")
endif()
+if(CMAKE_GENERATOR MATCHES "^Visual Studio.+" AND # Only supported in the VS IDE
+ MSVC_VERSION GREATER_EQUAL 1924 AND # Supported for 16.4+
+ WITH_CLANG_TIDY # And Clang Tidy needs to be on
+ )
+ set(CMAKE_VS_GLOBALS
+ "RunCodeAnalysis=false"
+ "EnableMicrosoftCodeAnalysis=false"
+ "EnableClangTidyCodeAnalysis=true"
+ )
+ set(VS_CLANG_TIDY On)
+endif()
+
# Mark libdir as system headers with a lower warn level, to resolve some warnings
# that we have very little control over
-if(MSVC_VERSION GREATER_EQUAL 1914 AND NOT MSVC_CLANG AND NOT WITH_WINDOWS_SCCACHE)
+if(MSVC_VERSION GREATER_EQUAL 1914 AND # Available with 15.7+
+ NOT MSVC_CLANG AND # But not for clang
+ NOT WITH_WINDOWS_SCCACHE AND # And not when sccache is enabled
+ NOT VS_CLANG_TIDY) # Clang-tidy does not like these options
add_compile_options(/experimental:external /external:templates- /external:I "${LIBDIR}" /external:W0)
endif()
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 88c19355960..0ce2341fc2e 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -22,7 +22,7 @@ if(WITH_LEGACY_OPENGL)
add_definitions(-DWITH_LEGACY_OPENGL)
endif()
-if(WITH_CLANG_TIDY)
+if(WITH_CLANG_TIDY AND NOT MSVC)
if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang")
message(WARNING "Currently Clang-Tidy might fail with GCC toolchain, switch to Clang toolchain if that happens")
endif()