SWIG не может найти зависимостиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 SWIG не может найти зависимости

Сообщение 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.


Подробнее здесь: https://stackoverflow.com/questions/791 ... pendencies
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»