Я не могу заставить SWIG найти файлы заголовков включенных пакетов. Я пытаюсь создать проект с помощью CMake в Visual Studio с пакетами, установленными с помощью vcpkg. Кажется, что процесс генерации CMake проходит нормально, и я могу найти пакеты в каталоге сборки. IntelliSence в Visual Studio также может найти нужный файл, если я щелкну оператор включения, удерживая клавишу CTRL. Но когда я пытаюсь построить проект, SWIG выдает ошибку при первом операторе импорта, поскольку не может найти файлы, на которые есть ссылки.
Я пробовал много изменений в своем файле CMake, но ничего особо не получалось. Единственное, что, казалось, приблизило меня, это добавление вручную жестких ссылок на каждую зависимость и зависимость каждой зависимости с помощью target_include_directories, но здесь я в конечном итоге также застрял с горой кажущихся случайными ошибок, в основном связанных с макросами препроцессора в стандартных путях включения Windows.
Файл CMake:
cmake_minimum_required (VERSION 3.21)
# Enable Hot Reload for MSVC compilers if supported.
if (POLICY CMP0141)
cmake_policy(SET CMP0141 NEW)
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$")
endif()
project ("AutoRiggerCpp")
include("C:/Program Files/Microsoft Visual Studio/2022/Community/VC/vcpkg/scripts/buildsystems/vcpkg.cmake")
include(GenerateExportHeader)
set(SWIG_DIR "C:/Users/marro/Portable Programs/swigwin-4.3.0/Lib")
set(SWIG_EXECUTABLE "C:/Users/marro/Portable Programs/swigwin-4.3.0/swig.exe")
find_package (SWIG REQUIRED)
include (UseSWIG)
set_property(SOURCE autorigger.i PROPERTY CPLUSPLUS ON)
set_source_files_properties(autorigger.i PROPERTIES SWIG_FLAGS "-includeall")
SWIG_ADD_LIBRARY(autorigger
TYPE SHARED
LANGUAGE CSharp
SOURCES autorigger.i
)
find_package(libigl CONFIG REQUIRED)
find_package(Eigen3 CONFIG REQUIRED)
target_link_libraries( autorigger PRIVATE libigl Eigen3::Eigen)
# A desperate attempt which resulted in a long list of random errors
#target_include_directories( autorigger
#PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
#PRIVATE ${CMAKE_SOURCE_DIR}
#PRIVATE ${libigl_INCLUDE_DIRS}
#PRIVATE ${EIGEN3_INCLUDE_DIRS}
#PRIVATE "C:/Users/marro/Etc/Cpp/AutoriggerCpp/out/build/x64-release/vcpkg_installed/vcpkg/pkgs/libigl_x64-windows/include"
#PRIVATE "C:/Users/marro/Etc/Cpp/AutoriggerCpp/out/build/x64-release/vcpkg_installed/vcpkg/pkgs/libigl_x64-windows/include/igl"
#PRIVATE "C:/Users/marro/Etc/Cpp/AutoriggerCpp/out/build/x64-release/vcpkg_installed/vcpkg/pkgs/eigen3_x64-windows/include"
#PRIVATE "C:/Users/marro/Etc/Cpp/AutoriggerCpp/out/build/x64-release/vcpkg_installed/vcpkg/pkgs/eigen3_x64-windows/include/eigen3/Eigen"
#PRIVATE "C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/vcpkg_installed/x64-windows/include/Eigen/src/Core/util"
#PRIVATE "C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/vcpkg_installed/x64-windows/include/Eigen/src/Core"
#PRIVATE "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.41.34120/include"
#PRIVATE "C:/Program Files (x86)/Windows Kits/10/Include/10.0.22621.0/ucrt"
#)
#set_target_properties( autorigger
# PROPERTIES
# SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE
#)
Вывод сборки:
>------ Build All started: Project: AutoRiggerCpp, Configuration: x64-release ------
[1/3] Swig compile autorigger.i for csharp
FAILED: CMakeFiles/autorigger.dir/autoriggerCSHARP_wrap.cxx autorigger.cs autoriggerPINVOKE.cs C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/CMakeFiles/autorigger.dir/autoriggerCSHARP_wrap.cxx C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/autorigger.cs C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/autoriggerPINVOKE.cs
C:\Windows\system32\cmd.exe /C "cd /D C:\Users\marro\Etc\Cpp\AutoRiggerCpp\out\build\x64-release && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E make_directory C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/CMakeFiles/autorigger.dir C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/CMakeFiles/autorigger.dir && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E env "SWIG_LIB=C:/Users/marro/Portable Programs/swigwin-4.3.0/Lib" "C:/Users/marro/Portable Programs/swigwin-4.3.0/swig.exe" -csharp -includeall -outdir C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release -c++ -dllimport autorigger -o C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/CMakeFiles/autorigger.dir/autoriggerCSHARP_wrap.cxx C:/Users/marro/Etc/Cpp/AutoRiggerCpp/autorigger.i"
C:\Users\marro\Etc\Cpp\AutoRiggerCpp\autorigger.h(10): error : Unable to find 'Eigen\Core'
ninja: build stopped: subcommand failed.
Build All failed.
Подробнее здесь: https://stackoverflow.com/questions/791 ... pendencies
SWIG не может найти зависимости ⇐ C++
Программы на C++. Форум разработчиков
1731871492
Anonymous
Я не могу заставить SWIG найти файлы заголовков включенных пакетов. Я пытаюсь создать проект с помощью CMake в Visual Studio с пакетами, установленными с помощью vcpkg. Кажется, что процесс генерации CMake проходит нормально, и я могу найти пакеты в каталоге сборки. IntelliSence в Visual Studio также может найти нужный файл, если я щелкну оператор включения, удерживая клавишу CTRL. Но когда я пытаюсь построить проект, SWIG выдает ошибку при первом операторе импорта, поскольку не может найти файлы, на которые есть ссылки.
Я пробовал много изменений в своем файле CMake, но ничего особо не получалось. Единственное, что, казалось, приблизило меня, это добавление вручную жестких ссылок на каждую зависимость и зависимость каждой зависимости с помощью target_include_directories, но здесь я в конечном итоге также застрял с горой кажущихся случайными ошибок, в основном связанных с макросами препроцессора в стандартных путях включения Windows.
Файл CMake:
cmake_minimum_required (VERSION 3.21)
# Enable Hot Reload for MSVC compilers if supported.
if (POLICY CMP0141)
cmake_policy(SET CMP0141 NEW)
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$")
endif()
project ("AutoRiggerCpp")
include("C:/Program Files/Microsoft Visual Studio/2022/Community/VC/vcpkg/scripts/buildsystems/vcpkg.cmake")
include(GenerateExportHeader)
set(SWIG_DIR "C:/Users/marro/Portable Programs/swigwin-4.3.0/Lib")
set(SWIG_EXECUTABLE "C:/Users/marro/Portable Programs/swigwin-4.3.0/swig.exe")
find_package (SWIG REQUIRED)
include (UseSWIG)
set_property(SOURCE autorigger.i PROPERTY CPLUSPLUS ON)
set_source_files_properties(autorigger.i PROPERTIES SWIG_FLAGS "-includeall")
SWIG_ADD_LIBRARY(autorigger
TYPE SHARED
LANGUAGE CSharp
SOURCES autorigger.i
)
find_package(libigl CONFIG REQUIRED)
find_package(Eigen3 CONFIG REQUIRED)
target_link_libraries( autorigger PRIVATE libigl Eigen3::Eigen)
# A desperate attempt which resulted in a long list of random errors
#target_include_directories( autorigger
#PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
#PRIVATE ${CMAKE_SOURCE_DIR}
#PRIVATE ${libigl_INCLUDE_DIRS}
#PRIVATE ${EIGEN3_INCLUDE_DIRS}
#PRIVATE "C:/Users/marro/Etc/Cpp/AutoriggerCpp/out/build/x64-release/vcpkg_installed/vcpkg/pkgs/libigl_x64-windows/include"
#PRIVATE "C:/Users/marro/Etc/Cpp/AutoriggerCpp/out/build/x64-release/vcpkg_installed/vcpkg/pkgs/libigl_x64-windows/include/igl"
#PRIVATE "C:/Users/marro/Etc/Cpp/AutoriggerCpp/out/build/x64-release/vcpkg_installed/vcpkg/pkgs/eigen3_x64-windows/include"
#PRIVATE "C:/Users/marro/Etc/Cpp/AutoriggerCpp/out/build/x64-release/vcpkg_installed/vcpkg/pkgs/eigen3_x64-windows/include/eigen3/Eigen"
#PRIVATE "C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/vcpkg_installed/x64-windows/include/Eigen/src/Core/util"
#PRIVATE "C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/vcpkg_installed/x64-windows/include/Eigen/src/Core"
#PRIVATE "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.41.34120/include"
#PRIVATE "C:/Program Files (x86)/Windows Kits/10/Include/10.0.22621.0/ucrt"
#)
#set_target_properties( autorigger
# PROPERTIES
# SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE
#)
Вывод сборки:
>------ Build All started: Project: AutoRiggerCpp, Configuration: x64-release ------
[1/3] Swig compile autorigger.i for csharp
FAILED: CMakeFiles/autorigger.dir/autoriggerCSHARP_wrap.cxx autorigger.cs autoriggerPINVOKE.cs C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/CMakeFiles/autorigger.dir/autoriggerCSHARP_wrap.cxx C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/autorigger.cs C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/autoriggerPINVOKE.cs
C:\Windows\system32\cmd.exe /C "cd /D C:\Users\marro\Etc\Cpp\AutoRiggerCpp\out\build\x64-release && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E make_directory C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/CMakeFiles/autorigger.dir C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/CMakeFiles/autorigger.dir && "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E env "SWIG_LIB=C:/Users/marro/Portable Programs/swigwin-4.3.0/Lib" "C:/Users/marro/Portable Programs/swigwin-4.3.0/swig.exe" -csharp -includeall -outdir C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release -c++ -dllimport autorigger -o C:/Users/marro/Etc/Cpp/AutoRiggerCpp/out/build/x64-release/CMakeFiles/autorigger.dir/autoriggerCSHARP_wrap.cxx C:/Users/marro/Etc/Cpp/AutoRiggerCpp/autorigger.i"
C:\Users\marro\Etc\Cpp\AutoRiggerCpp\autorigger.h(10): error : Unable to find 'Eigen\Core'
ninja: build stopped: subcommand failed.
Build All failed.
Подробнее здесь: [url]https://stackoverflow.com/questions/79197974/swig-unable-to-find-dependencies[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия