Сборка MSVC .dll ОШИБКА без указания причины (сбой только для порта vcpkg)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сборка MSVC .dll ОШИБКА без указания причины (сбой только для порта vcpkg)

Сообщение Anonymous »

У меня есть библиотека C++, которая успешно собирается с использованием Visual Studio 2022 (MSVC 17.6) как в конфигурации выпуска, так и в конфигурации отладки. Он также успешно собирается без каких-либо предупреждений с использованием WSL (Ubuntu 20.04.6 / g++ 10.5.0).
Недавно я создал порт настраиваемого наложения vcpkg, чтобы протестировать упаковку этого проекта, пока мы движемся к публичному выпуску (к сожалению, этот проект еще не доступен публично, поэтому я не могу поделиться всем исходным кодом). Этот порт успешно собирается и устанавливается для Linux, а также отлично создает конфигурацию отладки Windows, но не работает для конфигурации выпуска Windows.
Я использую следующую команду:

Код: Выделить всё

.\vcpkg\vcpkg.exe install vira --overlay-ports .\source\repos\custom-overlay\
И вот результат:

Код: Выделить всё

Computing installation plan...
The following packages will be built and installed:
vira:x64-windows@0.8.0 -- C:\Users\cgnam\.\source\repos\custom-overlay\vira
Detecting compiler hash for triplet x64-windows...
Compiler found: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.36.32532/bin/Hostx64/x64/cl.exe
Restored 0 package(s) from C:\Users\cgnam\AppData\Local\vcpkg\archives in 218 us. Use --debug to see more details.
Installing 1/1 vira:x64-windows@0.8.0...
Building vira:x64-windows@0.8.0...
C:\Users\cgnam\.\source\repos\custom-overlay\vira: info: installing overlay port from here
-- Using cached C:/Users/cgnam/vcpkg/downloads/vira-77f084234d7f87b7d65d3139423716a2a8699062.tar.gz
-- Extracting source C:/Users/cgnam/vcpkg/downloads/vira-77f084234d7f87b7d65d3139423716a2a8699062.tar.gz
-- Using source at C:/Users/cgnam/vcpkg/buildtrees/vira/src/a2a8699062-36622b99f2.clean
-- Found external ninja('1.11.0').
-- Configuring x64-windows
-- Building x64-windows-dbg
-- Building x64-windows-rel
CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:134 (message):
Command failed: C:/Users/cgnam/vcpkg/downloads/tools/cmake-3.29.2-windows/cmake-3.29.2-windows-i386/bin/cmake.exe --build .  --config Release --target install -- -v -j13
Working Directory: C:/Users/cgnam/vcpkg/buildtrees/vira/x64-windows-rel
See logs for more information:
C:\Users\cgnam\vcpkg\buildtrees\vira\install-x64-windows-rel-out.log

Call Stack (most recent call first):
installed/x64-windows/share/vcpkg-cmake/vcpkg_cmake_build.cmake:74 (vcpkg_execute_build_process)
installed/x64-windows/share/vcpkg-cmake/vcpkg_cmake_install.cmake:16 (vcpkg_cmake_build)
C:/Users/cgnam/source/repos/custom-overlay/vira/portfile.cmake:12 (vcpkg_cmake_install)
scripts/ports.cmake:192 (include)

error: building vira:x64-windows failed with: BUILD_FAILED
Когда я перехожу к указанному файлу install-x64-windows-rel-out.log, все выглядит нормально до самого конца, пока, по-видимому, он не выходит из ниоткуда без каких-либо потому что я могу идентифицировать:

Код: Выделить всё

[47/48] C:\WINDOWS\system32\cmd.exe /C "C:\WINDOWS\system32\cmd.exe /C "C:\Users\cgnam\vcpkg\downloads\tools\cmake-3.29.2-windows\cmake-3.29.2-windows-i386\bin\cmake.exe -E __create_def C:\Users\cgnam\vcpkg\buildtrees\vira\x64-windows-rel\source\vira\CMakeFiles\vira.dir\.\exports.def C:\Users\cgnam\vcpkg\buildtrees\vira\x64-windows-rel\source\vira\CMakeFiles\vira.dir\.\exports.def.objs && cd C:\Users\cgnam\vcpkg\buildtrees\vira\x64-windows-rel" &&  C:\Users\cgnam\vcpkg\downloads\tools\cmake-3.29.2-windows\cmake-3.29.2-windows-i386\bin\cmake.exe -E vs_link_dll --intdir=source\vira\CMakeFiles\vira.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\mt.exe --manifests  -- C:\PROGRA~1\MICROS~4\2022\COMMUN~1\VC\Tools\MSVC\1436~1.325\bin\Hostx64\x64\link.exe  source\vira\CMakeFiles\vira.dir\color.cpp.obj source\vira\CMakeFiles\vira.dir\pose.cpp.obj source\vira\CMakeFiles\vira.dir\rigid_body.cpp.obj source\vira\CMakeFiles\vira.dir\rotation.cpp.obj source\vira\CMakeFiles\vira.dir\cameras\camera.cpp.obj source\vira\CMakeFiles\vira.dir\cameras\pinhole_camera.cpp.obj source\vira\CMakeFiles\vira.dir\cameras\blender_camera.cpp.obj source\vira\CMakeFiles\vira.dir\cameras\sensor.cpp.obj source\vira\CMakeFiles\vira.dir\dems\spc_maplet.cpp.obj source\vira\CMakeFiles\vira.dir\geometry\interfaces\obj_interface.cpp.obj source\vira\CMakeFiles\vira.dir\geometry\interfaces\ply_interface.cpp.obj source\vira\CMakeFiles\vira.dir\geometry\interfaces\dsk_interface.cpp.obj source\vira\CMakeFiles\vira.dir\geometry\mesh.cpp.obj source\vira\CMakeFiles\vira.dir\geometry\triangle.cpp.obj source\vira\CMakeFiles\vira.dir\geometry\vertex.cpp.obj source\vira\CMakeFiles\vira.dir\images\interfaces\image_interface.cpp.obj source\vira\CMakeFiles\vira.dir\images\image_utils.cpp.obj source\vira\CMakeFiles\vira.dir\images\image.cpp.obj source\vira\CMakeFiles\vira.dir\images\image_to_imagebuf.cpp.obj source\vira\CMakeFiles\vira.dir\lights\light.cpp.obj source\vira\CMakeFiles\vira.dir\lights\point_light.cpp.obj source\vira\CMakeFiles\vira.dir\lights\sphere_light.cpp.obj source\vira\CMakeFiles\vira.dir\materials\cook_torrance.cpp.obj source\vira\CMakeFiles\vira.dir\materials\ggx.cpp.obj source\vira\CMakeFiles\vira.dir\materials\lambertian.cpp.obj source\vira\CMakeFiles\vira.dir\materials\material.cpp.obj source\vira\CMakeFiles\vira.dir\materials\mcewen.cpp.obj source\vira\CMakeFiles\vira.dir\quipu\class_ids.cpp.obj source\vira\CMakeFiles\vira.dir\quipu\quipu_reader.cpp.obj source\vira\CMakeFiles\vira.dir\quipu\quipu_writer.cpp.obj source\vira\CMakeFiles\vira.dir\quipu\quipu_io.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\acceleration\aabb.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\acceleration\vira_bvh.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\acceleration\vira_embree.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\acceleration\nodes.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\acceleration\tlas.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\cpu_path_tracer.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\cpu_rasterizer.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\ray.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\renderer.cpp.obj source\vira\CMakeFiles\vira.dir\scene\scene.cpp.obj source\vira\CMakeFiles\vira.dir\scene\scene_graph.cpp.obj source\vira\CMakeFiles\vira.dir\utils\utils.cpp.obj source\vira\CMakeFiles\vira.dir\utils\spice_utils.cpp.obj  /out:vira.dll /implib:source\vira\vira.lib /pdb:vira.pdb /dll /version:0.0 /machine:x64 /nologo /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF    /INCREMENTAL:NO /LTCG /DEF:source\vira\CMakeFiles\vira.dir\.\exports.def  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\tinyobjloader.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\lz4.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\tbb12.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\tbbmalloc.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\geotiff_i.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\proj.lib  external\glob\glob.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\miniply.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\OpenImageIO.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\cspice.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\glm.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\embree3.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\tiff.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\OpenImageIO_Util.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\Imath-3_1.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
FAILED: vira.dll source/vira/vira.lib
C:\WINDOWS\system32\cmd.exe /C "C:\WINDOWS\system32\cmd.exe /C "C:\Users\cgnam\vcpkg\downloads\tools\cmake-3.29.2-windows\cmake-3.29.2-windows-i386\bin\cmake.exe -E __create_def C:\Users\cgnam\vcpkg\buildtrees\vira\x64-windows-rel\source\vira\CMakeFiles\vira.dir\.\exports.def C:\Users\cgnam\vcpkg\buildtrees\vira\x64-windows-rel\source\vira\CMakeFiles\vira.dir\.\exports.def.objs && cd C:\Users\cgnam\vcpkg\buildtrees\vira\x64-windows-rel" &&  C:\Users\cgnam\vcpkg\downloads\tools\cmake-3.29.2-windows\cmake-3.29.2-windows-i386\bin\cmake.exe -E vs_link_dll --intdir=source\vira\CMakeFiles\vira.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\mt.exe --manifests  -- C:\PROGRA~1\MICROS~4\2022\COMMUN~1\VC\Tools\MSVC\1436~1.325\bin\Hostx64\x64\link.exe  source\vira\CMakeFiles\vira.dir\color.cpp.obj source\vira\CMakeFiles\vira.dir\pose.cpp.obj source\vira\CMakeFiles\vira.dir\rigid_body.cpp.obj source\vira\CMakeFiles\vira.dir\rotation.cpp.obj source\vira\CMakeFiles\vira.dir\cameras\camera.cpp.obj source\vira\CMakeFiles\vira.dir\cameras\pinhole_camera.cpp.obj source\vira\CMakeFiles\vira.dir\cameras\blender_camera.cpp.obj source\vira\CMakeFiles\vira.dir\cameras\sensor.cpp.obj source\vira\CMakeFiles\vira.dir\dems\spc_maplet.cpp.obj source\vira\CMakeFiles\vira.dir\geometry\interfaces\obj_interface.cpp.obj source\vira\CMakeFiles\vira.dir\geometry\interfaces\ply_interface.cpp.obj source\vira\CMakeFiles\vira.dir\geometry\interfaces\dsk_interface.cpp.obj source\vira\CMakeFiles\vira.dir\geometry\mesh.cpp.obj source\vira\CMakeFiles\vira.dir\geometry\triangle.cpp.obj source\vira\CMakeFiles\vira.dir\geometry\vertex.cpp.obj source\vira\CMakeFiles\vira.dir\images\interfaces\image_interface.cpp.obj source\vira\CMakeFiles\vira.dir\images\image_utils.cpp.obj source\vira\CMakeFiles\vira.dir\images\image.cpp.obj source\vira\CMakeFiles\vira.dir\images\image_to_imagebuf.cpp.obj source\vira\CMakeFiles\vira.dir\lights\light.cpp.obj source\vira\CMakeFiles\vira.dir\lights\point_light.cpp.obj source\vira\CMakeFiles\vira.dir\lights\sphere_light.cpp.obj source\vira\CMakeFiles\vira.dir\materials\cook_torrance.cpp.obj source\vira\CMakeFiles\vira.dir\materials\ggx.cpp.obj source\vira\CMakeFiles\vira.dir\materials\lambertian.cpp.obj source\vira\CMakeFiles\vira.dir\materials\material.cpp.obj source\vira\CMakeFiles\vira.dir\materials\mcewen.cpp.obj source\vira\CMakeFiles\vira.dir\quipu\class_ids.cpp.obj source\vira\CMakeFiles\vira.dir\quipu\quipu_reader.cpp.obj source\vira\CMakeFiles\vira.dir\quipu\quipu_writer.cpp.obj source\vira\CMakeFiles\vira.dir\quipu\quipu_io.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\acceleration\aabb.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\acceleration\vira_bvh.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\acceleration\vira_embree.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\acceleration\nodes.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\acceleration\tlas.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\cpu_path_tracer.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\cpu_rasterizer.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\ray.cpp.obj source\vira\CMakeFiles\vira.dir\rendering\renderer.cpp.obj source\vira\CMakeFiles\vira.dir\scene\scene.cpp.obj source\vira\CMakeFiles\vira.dir\scene\scene_graph.cpp.obj source\vira\CMakeFiles\vira.dir\utils\utils.cpp.obj source\vira\CMakeFiles\vira.dir\utils\spice_utils.cpp.obj  /out:vira.dll /implib:source\vira\vira.lib /pdb:vira.pdb /dll /version:0.0 /machine:x64 /nologo /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF    /INCREMENTAL:NO /LTCG /DEF:source\vira\CMakeFiles\vira.dir\.\exports.def  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\tinyobjloader.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\lz4.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\tbb12.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\tbbmalloc.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\geotiff_i.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\proj.lib  external\glob\glob.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\miniply.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\OpenImageIO.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\cspice.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\glm.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\embree3.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\tiff.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\OpenImageIO_Util.lib  C:\Users\cgnam\vcpkg\installed\x64-windows\lib\Imath-3_1.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
ninja: build stopped: subcommand failed.
Я просматривал их несколько раз, но не могу определить причину, по которой это не удалось. Опять же, все работает идеально, как и ожидалось, когда порт установлен в Linux. (И обе конфигурации Debug/Release работают в Windows, когда я собираю проект непосредственно в Visual Studio, а не с помощью команды установки vcpkg из пользовательского наложения)
Это porfile.cmake< /code> если это актуально:

Код: Выделить всё

vcpkg_from_git(
OUT_SOURCE_PATH SOURCE_PATH
URL git@aetd-git.gsfc.nasa.gov:vira/vira.git
REF 77f084234d7f87b7d65d3139423716a2a8699062 # 0.8.0
HEAD_REF vcpkg_dev
)

vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
)

vcpkg_cmake_install()

vcpkg_cmake_config_fixup(
PACKAGE_NAME "vira"
CONFIG_PATH "lib/vira/cmake"
)

# Remove empty directories:
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/vira")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib/vira")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")

file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
configure_file("${CMAKE_CURRENT_LIST_DIR}/usage" "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" COPYONLY)
Я понимаю, что предоставил не так много информации, поскольку в настоящее время не могу поделиться всем источником. Но я даже не знаю, с чего начать искать здесь проблему. Если у кого-нибудь есть идеи, что может быть возможной причиной, я был бы очень признателен за любые идеи.
РЕДАКТИРОВАТЬ:
Я обнаружил, принудив мою библиотеку для статической сборки, добавив:

Код: Выделить всё

vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
в начало файла portfile.cmake, чтобы правильно построить установку для Windows. Таким образом, что-то в сборке в качестве общей библиотеки нарушено (хотя, опять же, у Visual Studio нет проблем с созданием именно этого коммита в качестве общей библиотеки. Это происходит только тогда, когда я пытаюсь заставить vcpkg собрать/установить его из порта настраиваемого наложения или частного реестр)

Подробнее здесь: https://stackoverflow.com/questions/787 ... vcpkg-port
Ответить

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

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

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

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

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