Как построить и отладить проект MSYS2 / MinGW64 / CMake в Visual Studio 2017? - PullRequest
0 голосов
/ 06 декабря 2018

Я успешно создал проект C ++ с использованием инструментов MSYS2 / MinGW64 / CMake.Теперь я хотел бы отредактировать его и отладить в Visual Studio, поскольку это хорошая среда разработки и средство разработки по умолчанию в Windows.К сожалению, я не могу собрать проект в Visual Studio, потому что он не может найти библиотеки.

Вот файл CMakeLists.txt, который я использую, где, среди прочего, я указываю, где находятся папки включения,файлы ссылок и каталоги ссылок:

# src/CMakeLists.txt
cmake_minimum_required(VERSION 3.3 FATAL_ERROR)

# Project name and current version
project(rascam VERSION 0.1 LANGUAGES CXX)

# Enable general warnings
# See http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")

# Use 2014 C++ standard.
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# Must use GNUInstallDirs to install libraries into correct locations on all platforms:
include(GNUInstallDirs)

# Pkg_config is used to locate header and files for dependency libraries:
find_package(PkgConfig)

# Defines variables GTKMM_INCLUDE_DIRS, GTKMM_LIBRARY_DIRS and GTKMM_LIBRARIES.
pkg_check_modules(GTKMM gtkmm-3.0) 
link_directories( ${GTKMM_LIBRARY_DIRS} )
include_directories( ${GTKMM_INCLUDE_DIRS} )

# Compile files:
add_executable(rascapp
    cpp/main.cpp    
    cpp/main-window.cpp
)

# Add folder with all headers:
target_include_directories(rascapp PRIVATE hpp)

# Link files:
target_link_libraries(rascapp
   ${GTKMM_LIBRARIES}  
)

Чтобы настроить свою среду, я установил MSYS2 на платформу Windows и добавил через pacman все следующие пакеты:

pacman -S base base-devel net-utils git ruby wget man
pacman -S msys/openssh msys/vim msys/bc nano msys/tmux
pacman -S gzip zip unzip msys/p7zip tar msys/tree
pacman -S msys/winpty msys/ed msys/pwgen msys/zsh
pacman -S mingw64/mingw-w64-x86_64-jq
pacman -S msys/screenfetch
pacman -S mingw-w64-x86_64-toolchain
pacman -S mingw64/mingw-w64-x86_64-cmake

Мой проектзависит от Gtkmm , поэтому я добавил следующую зависимость:

pacman -S mingw64/mingw-w64-x86_64-gtkmm3

Затем я добавил C:\Msys2\MinGW64\bin к пути.

Затем я переключился на MSYS2/ MinGW64 терминал, и загрузил мой проект, создал папку build и собрал ее.Как и в Windows, CMake по умолчанию создает Visual Studio файлы.Я был бы в порядке с этим, если бы я только мог заставить это работать.Исходя из идей, я указал опцию Unix Makefiles:

cd /c/where/your/root/folder/is
git clone https://github.com/cpp-tutorial/raspberry-cpp-gtk-opencv.git
cd raspberry-cpp-gtk-opencv
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug -G"Unix Makefiles" ../src/
make
./racapp.exe

И это создает проект.Он создает исполняемый файл, который я могу запустить из MinGW64 или из проводника, дважды щелкнув по нему.Я также могу gdb it

Убедившись, что проект выглядит правильно, я попытался открыть его в Visual Studio Community 2017 15.9.3 двумя различными способами:

  1. Использование CMake для создания Visual Studio проекта: Visual Studio открывает проект, и я вижу различные цели, но когда я запускаю сеанс отладки, онжалуется, что не может найти библиотеки Gtk.Глядя в свойствах проекта, я вижу, что библиотеки взяты с правильного пути C:\Msys2\MinGW64\bin.И я проверил, что библиотека существует, хотя с другим именем: libgtkmm-3.0.dll.a вместо gtkmm-3.0.dll.
  2. Использование Visual Studio * Функция открытия файла : Снова, проект открывается, яможет видеть цели и исходные файлы, но жалуется, что не находит включаемые файлы gtkmm.h.Мне не удалось достичь фазы соединения, но я предполагаю, что он не найдет библиотеки.

Мой вопрос: каков правильный и стандартный способ сборки и отладки MSYS2 / MinGW64?/ CMake проект в Visual Studio?

1 Ответ

0 голосов
/ 08 декабря 2018

Как прокомментировали другие пользователи (спасибо, @DavidGrayson), компиляторы gcc.exe и g++.exe, установленные в конфигурации MSYS2 , не используют формат Visual Studio требуется для отладочных символов.Следовательно, невозможно использовать Visual Studio для отладки исполняемых файлов, созданных с помощью Mingw .

Чтобы иметь возможность отладки (и сборки и редактирования), используйте другую IDE, более дружественную MinGW , например Code :: Blocks .

Тем не менее, чтобы ответить на мой собственный вопрос, я опишу здесь процедуру настройки проекта в Visual Studio для редактирования исходных файлов, сборки и запуска исполняемого файла.Для этой процедуры не нужно использовать CMake для чего-либо:

  1. Запустить Visual Studio 2017
  2. Файл -> Открыть -> Папка ...
  3. Выберите папку, содержащую верхнюю часть CMakeLists.txt.
  4. Она автоматически обнаружит, что это CMake проект, и попробуйте загрузить его.Возможно, он жалуется на некоторые ошибки.
  5. CMake -> Изменить настройки CMake -> Выберите свой топ CMakeLists.txt.
  6. В диалоговом окнеищите Mingw64-Release (на самом деле, есть * Mingw64-Debug, но вы все равно не сможете отладить).
  7. Если все прошло хорошо, появился CMakeSettings.jsonв вашем проекте и Visual Studio перестроит проект, на этот раз без ошибок.
  8. Выберите исполняемую цель.
  9. Launch.

Следует построить, затем выполнить приложение.

...