Как настроить OpenCV с помощью cmake для включения динамических и статических сборок? - PullRequest
0 голосов
/ 07 ноября 2019

Я собрал и make install редактировал OpenCV на моем Mac с помощью SHARED_LIBS. Я хочу иметь возможность выбирать для каждого проекта, если я собрал с или без общих библиотек.

Когда я компилирую дополнительную сборку OpenCV с -DBUILD_SHARED_LIBS=OFF, как я могу ссылаться на нее в CMakeLists моего проекта и выбралтип сборки, который я хочу?

У меня есть источник с общими библиотеками в моем ~/opencv, и я уже скомпилировал его в ~/opencv/build, за которым следует make install.

Когда я создаю другой каталог, такой как ~/opencv/static_build, как мне нужно адаптировать мой CMakeLists для создания приложения статической сборки? До сих пор я использовал:

    find_package( OpenCV REQUIRED )

    include_directories(${OpenCV_INCLUDE_DIRS})
    target_link_libraries(test ${OpenCV_LIBS})

Но если я не ошибаюсь, все эти строки зависят от переменных, которые были добавлены в cmake во время моего начального make install.

1 Ответ

1 голос
/ 11 ноября 2019

Он работает путем настройки другого места установки с флагом cmake -D CMAKE_INSTALL_PREFIX для каждой сборки, а make install установит их в соответствующие места.

Для того, чтобы различать конкретные сборки иразрешить cmake найти библиотеку, если она не находится в своем пути, необходимо добавить следующую строку в CMakeLists.txt:

set(OpenCV_DIR /path/to/build/lib/cmake)

перед:

find_package( OpenCV REQUIRED )

...