Assimp cmake mingw-w64 VSCode win10 - PullRequest
       151

Assimp cmake mingw-w64 VSCode win10

0 голосов
/ 09 мая 2020

Я пытаюсь использовать assimp в opengl, следуя инструкциям по сборке здесь: https://github.com/assimp/assimp/blob/master/Build.md в следующей среде:

assimp 5.0.1    
cmake 3.17.2
mingw-w64 with gcc/g++ 8.1.0
VSCode in Win10

Я пробовал в cmake- gui, используйте MinGW Makefile, я могу получить make-файл в пути сборки.

Затем я попытался сделать это с помощью mingw32-make и остановился на 69% с помощью

[ 67%] Linking CXX shared library libassimp.dll
[ 67%] Built target assimp
Scanning dependencies of target assimp_cmd
[ 67%] Building RC object tools/assimp_cmd/CMakeFiles/assimp_cmd.dir/assimp_cmd.rc.obj
[ 68%] Building CXX object tools/assimp_cmd/CMakeFiles/assimp_cmd.dir/CompareDump.cpp.obj
[ 68%] Building CXX object tools/assimp_cmd/CMakeFiles/assimp_cmd.dir/ImageExtractor.cpp.obj
[ 68%] Building CXX object tools/assimp_cmd/CMakeFiles/assimp_cmd.dir/Main.cpp.obj
[ 68%] Building CXX object tools/assimp_cmd/CMakeFiles/assimp_cmd.dir/WriteDumb.cpp.obj
[ 69%] Building CXX object tools/assimp_cmd/CMakeFiles/assimp_cmd.dir/Info.cpp.obj
[ 69%] Building CXX object tools/assimp_cmd/CMakeFiles/assimp_cmd.dir/Export.cpp.obj
[ 69%] Linking CXX executable assimp.exe
CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x8d): undefined reference to `Assimp::Importer::ValidateFlags(unsigned int) const'
CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0xc4): undefined reference to `Assimp::Importer::ReadFile(char const*, unsigned int)'
CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x14e): undefined reference to `Assimp::DefaultLogger::create(char const*, Assimp::Logger::LogSeverity, unsigned int, Assimp::IOSystem*)'
CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x183): undefined reference to `Assimp::DefaultLogger::kill()'
CMakeFiles\assimp_cmd.dir/objects.a(Main.cpp.obj):Main.cpp:(.text+0x1b8): undefined reference to `Assimp::Importer::GetErrorString() const'
......
......
......
CMakeFiles\assimp_cmd.dir/objects.a(Export.cpp.obj):Export.cpp:(.text+0xf44): undefined reference to `Assimp::Exporter::GetExportFormatDescription(unsigned long long) const'
collect2.exe: error: ld returned 1 exit status
mingw32-make[2]: *** [tools\assimp_cmd\CMakeFiles\assimp_cmd.dir\build.make:197: tools/assimp_cmd/assimp.exe] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:297: tools/assimp_cmd/CMakeFiles/assimp_cmd.dir/all] Error 2
mingw32-make: *** [Makefile:149: all] Error 2

Хотя я могу получить "libassimp.dll" и "libassimp.dll.a" в каталоге сборки, мне не удалось связать их с моим проектом. есть много ошибок типа «неопределенная ссылка на xxxx».

  1. Я поместил .dll в путь exe, поместил файл .a в путь lib, поместил все файлы assimp .h в путь include.
  2. Кажется, что VSCode не поддерживает имя файла «libassimp.dll.a», я должен переименовать его как libassimpdll.a и написать «-lassimp» в задачах. json. Но есть ошибки «неопределенная ссылка».
  3. Я попытался собрать assimp для VS2017, и я могу получить dll и lib.
  4. Я попытался напрямую связать assimp 3.1.1 (с x86 / x64 dll и lib уже предоставлены официально), но тоже не удалось.

Итак, мой вопрос: , удастся ли кому-нибудь построить assimp с cmake и mingw-w64 и связать его в проекте в VSCode Win10?

1 Ответ

0 голосов
/ 02 июня 2020

Я могу собрать assimp 5.0.1 с:

cmake.exe -G"MSYS Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DASSIMP_BUILD_ASSIMP_TOOLS:BOOL=OFF -DASSIMP_HEADERCHECK:BOOL=OFF -DASSIMP_OPT_BUILD_PACKAGES:BOOL=OFF -DSYSTEM_IRRXML:BOOL=OFF -DASSIMP_BUILD_SAMPLES:BOOL=OFF -DBUILD_DOCS:BOOL=OFF -DASSIMP_BUILD_TESTS:BOOL=OFF -S. -Bbuild_win &&
make -Cbuild_win &&
echo Success

и даже то же самое с -DBUILD_SHARED_LIBS:BOOL=ON под оболочкой MSYS2.

Он не работает с -DASSIMP_BUILD_ASSIMP_TOOLS:BOOL=ON хотя.

...