У меня есть проект XXX
, который зависит от другого фреймворка YYY
. Каркас обеспечивает YYYConfig.cmake
. Когда я настраиваю свой проект с cmake-gui
, я добавляю каркас к переменной YYY_DIR
. Я генерирую и создаю решение. Теперь, когда я запускаю XXX.exe
, я получаю ошибку, что .dll
из YYY
не может быть загружен. Библиотеки и файлы заголовков .lib
найдены, если я прав.
В сети я видел, что .dll
нужно поместить в ту же папку, где находится .exe
. Но почему я не могу просто использовать .dll
, который уже присутствует в папке установки YYY
? И есть ли способ автоматически поместить все .dll
, что нужно моему проекту, в нужную папку?
У меня такое ощущение, что мне не хватает немного фундаментальных знаний о развертывании, поэтому я очень признателен любая полезная ссылка или ссылка об этом. Спасибо.
Дополнительная информация
Я построил фреймворк, т.е. AliceVision с использованием vcpkg
, cmake-gui
и Visual Studio 2019. Папка установленного фреймворка содержит следующие папки:
bin
со многими .exe
и .dll
share
где AliceVisionConfig.cmake
находится в include
со многими .hpp
каркаса и другими зависимостями lib
со многими .lib
Теперь я пытаюсь создать простой тестовый проект с main.cpp
#include <iostream>
#include <aliceVision/system/cpu.hpp>
int main()
{
std::cout << "Total cpus " << aliceVision::system::get_total_cpus() << std::endl;
return EXIT_SUCCESS;
}
и CMakeLists.txt
cmake_minimum_required(VERSION 3.3)
project(AliceVisionAs3rdParty)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(AliceVision CONFIG REQUIRED)
message(STATUS "Found AliceVision : ${AliceVision_FOUND}")
message(STATUS "Found AliceVision version: ${AliceVision_VERSION}")
add_executable(testAV3rd main.cpp)
target_link_libraries(testAV3rd PUBLIC aliceVision_system)
При настройке с cmake-gui
в папке моего тестового проекта Я просто использую переменную AliceVision_DIR
, чтобы указать на папку, в которой находится AliceVisionConfig.cmake
. Я использую vcpkg
для набора инструментов, который необходим фреймворку для некоторых зависимостей. Затем я создаю и строю решение. Здесь я запускаю .exe
и получаю сообщение, что aliceVision_system.dll
не может быть найден. Он присутствует в папке bin
платформы и как aliceVision_system.lib
в папке lib
. Я проверил .exe
с Зависимости и да, именно этот .dll
не найден. Все Windows .dll
вещи найдены ...