Я успешно создал проект 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 двумя различными способами:
- Использование CMake для создания Visual Studio проекта: Visual Studio открывает проект, и я вижу различные цели, но когда я запускаю сеанс отладки, онжалуется, что не может найти библиотеки Gtk.Глядя в свойствах проекта, я вижу, что библиотеки взяты с правильного пути
C:\Msys2\MinGW64\bin
.И я проверил, что библиотека существует, хотя с другим именем: libgtkmm-3.0.dll.a
вместо gtkmm-3.0.dll
. - Использование Visual Studio * Функция открытия файла : Снова, проект открывается, яможет видеть цели и исходные файлы, но жалуется, что не находит включаемые файлы
gtkmm.h
.Мне не удалось достичь фазы соединения, но я предполагаю, что он не найдет библиотеки.
Мой вопрос: каков правильный и стандартный способ сборки и отладки MSYS2 / MinGW64?/ CMake проект в Visual Studio?