Visual Studioのデバッガでの表示をカスタマイズするものとしてNatvisがあるわけですが、
Create custom views of native objects in the debugger | Microsoft Docs
.vcxproj
でそれを追加して認識させるためには
<ItemGroup> <Natvis Include="inferior_vector.natvis" /> </ItemGroup>
のように追加すればいいとわかっています。
現在CMakeを使ってVSのプロジェクトを生成している都合上、CMakeで認識して上記のようなものを吐かせたいわけです。
CMake側での対応としては
Support natvis source file type in the MSVC Project Generator (#16043) · Issues · CMake / CMake · GitLab
というのがあって、CMake version 3.7.0に含まれているはずです。
しかしどうやって利用すればいいのかわかりません。
extension:cmake natvis
でGithubを調べてみても、
cmake
1SET_SOURCE_FILES_PROPERTIES(<natvis files> LANGUAGE natvis)
のようにしているものか、あとはadd_executable
に直接渡している例が殆どで(他のはライブラリビルド時に含めるものなので今回は除外)それらはいずれも動きません(前者はなんの効果もなく、後者は認識されない拡張子で弾かれる)
${CMAKE_SOURCE_DIR}/../inferioir/vector/inferior_vector.natvis
を認識させるにはどのように下記のスクリプトを書き換えればいいでしょうか?
cmake
1cmake_minimum_required(VERSION 3.7.0) 2enable_language(CXX) 3set(CMAKE_CXX_STANDARD 14) # C++14... 4set(CMAKE_CXX_STANDARD_REQUIRED ON) #...is required... 5set(CMAKE_CXX_EXTENSIONS OFF) #...without compiler extensions like gnu++11 6 7# 8# Set our project name 9# 10project(inferior_test) 11 12# 13# Source files 14# 15set(inferior_test_src 16 main.cpp 17) 18 19# 20# find inferior 21# 22include_directories(${CMAKE_SOURCE_DIR}/..) 23 24# 25# find iutest 26# 27if(EXISTS ${CMAKE_SOURCE_DIR}/../iutest/include) 28 set(IUTEST_ROOT_DIR ${CMAKE_SOURCE_DIR}/../iutest) 29endif() 30 31set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/../cmake/modules) 32include(FindIutest) 33find_package(IUTEST) 34include_directories(${IUTEST_INCLUDE_DIR}) 35 36# 37# Update compiler waring flags 38# 39if(MSVC) 40 # Force to always compile with W4 41 if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") 42 string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") 43 else() 44 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") 45 endif() 46elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) 47 # Update if necessary 48 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-long-long -pedantic") 49endif() 50 51# 52# Compile 53# 54add_executable(inferior_test ${inferior_test_src}) 55 56# 57# Link 58# 59if(WIN32) 60 target_link_libraries(inferior_test ws2_32) 61endif()
cmake
1# - Try to find iutest include dirs 2# 3# Usage of this module as follows: 4# 5# find_package(IUTEST) 6# 7# Variables used by this module, they can change the default behaviour and need 8# to be set before calling find_package: 9# 10# IUTEST_ROOT_DIR Set this variable to the root installation of 11# iutest if the module has problems finding the 12# proper installation path. 13# 14# Variables defined by this module: 15# 16# IUTEST_FOUND System has iutest, include and library dirs found 17# IUTEST_INCLUDE_DIR The iutest include directories. 18 19find_path(IUTEST_ROOT_DIR 20 NAMES include/iutest.hpp 21 ) 22 23find_path(IUTEST_INCLUDE_DIR 24 NAMES iutest.hpp 25 HINTS ${IUTEST_ROOT_DIR}/include 26) 27 28include(FindPackageHandleStandardArgs) 29find_package_handle_standard_args(IUTEST DEFAULT_MSG 30 IUTEST_INCLUDE_DIR 31)
追記
cmake
1set(inferior_test_src 2 main.cpp 3 ${CMAKE_SOURCE_DIR}/../inferioir/vector/inferior_vector.natvis 4)
のように変更しましたがだめですね。
The CXX compiler identification is MSVC 19.12.25835.0 Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.12.25827/bin/Hostx86/x64/cl.exe Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.12.25827/bin/Hostx86/x64/cl.exe -- works Detecting CXX compiler ABI info Detecting CXX compiler ABI info - done Detecting CXX compile features Detecting CXX compile features - done The C compiler identification is MSVC 19.12.25835.0 Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.12.25827/bin/Hostx86/x64/cl.exe Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.12.25827/bin/Hostx86/x64/cl.exe -- works Detecting C compiler ABI info Detecting C compiler ABI info - done Detecting C compile features Detecting C compile features - done Found IUTEST: C:/Users/yumetodo/Documents/git/inferior/iutest/include Configuring done CMake Error at CMakeLists.txt:55 (add_executable): Cannot find source file: C:/Users/yumetodo/Documents/git/inferior/inferioir/vector/inferior_vector.natvis Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx CMake Error: CMake can not determine linker language for target: inferior_test Generating done
CMake: 3.10.1
Visual Studio 2017

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/24 14:56
2018/02/24 14:58
2018/02/24 16:48
2018/02/24 17:03
2018/02/24 17:11