Сборка TBB с использованием Visual Studio 2015 x64 и CMake - PullRequest
0 голосов
/ 08 января 2019

Я хотел бы собрать TBB, чтобы использовать его в другом проекте CMake. Я пытался собрать TBB из источника Github , используя makefile (обновлен до VisualStudio 2015). Это не удалось из-за загадочной ошибки:

LINK : fatal error LNK1181: cannot open input file 'opencv_core300.lib'

Откуда может возникнуть эта ошибка?

Моя вторая попытка состояла в том, чтобы собрать TBB с использованием другого репозитория , который позволяет строить с использованием CMake. Эта сборка создает файл tbb.lib, tbb.dll и т. Д. Теперь я застрял, как включить это в мои другие файлы cmake. Там нет TBBConfig.cmake или аналогичного. Мой CMakeLists.txt для моего проекта выглядит так:

cmake_minimum_required(VERSION 3.10)
project(IntrafraktionelleRegistrierung)

find_package(ITK REQUIRED
 COMPONENTS 
    ITKRegistrationCommon
    ITKRegistrationMethodsv4
)

include(${ITK_USE_FILE})
set(SRC
    ${CMAKE_PROJECT_NAME}.cxx
)

if (DEFINED ENV{TBBROOT})
    message(STATUS "TBBROOT: $ENV{TBBROOT}")    
else()
    message(STATUS "TBBROOT not defined!")
endif()

find_package(TBB REQUIRED)  
add_executable(${CMAKE_PROJECT_NAME} ${SRC})
target_link_libraries( ${CMAKE_PROJECT_NAME}
    ${ITK_LIBRARIES}
    tbb
)'

TBBROOT - это каталог сборки tbb. Доступный мне FindTBB.cmake заимствован из здесь и скопирован в каталог модулей cmake.

В последней версии двоичных файлов TBB есть папка CMake с TBBConfig.cmake внутри. Я использовал это, чтобы связать TBB с моим проектом, но каким-то образом я закончил с ошибкой, заявляющей: «tbb-NOTFOUND.obj не может быть найден». (Этот путь все еще расследуется.

Кто-нибудь использовал этот репозиторий для настройки и сборки проекта cmake?

1 Ответ

0 голосов
/ 11 января 2019

О вопросах, связанных с CMake

В основном у вас есть два варианта:

  • Интеграция готовых двоичных файлов TBB в ваш проект

    Вы можете использовать двоичные файлы TBB (точно так же, как вы это сделали) в соответствии со следующим примером . После вызова find_package(TBB REQUIRED) вы получите цели TBB в формате TBB::<component> (например, TBB::tbb, TBB::tbbmalloc и т. Д.). Также переменная TBB_IMPORTED_TARGETS будет содержать все импортированные цели TBB.

    Итак, вам нужно немного изменить свой target_link_libraries:

    target_link_libraries( ${CMAKE_PROJECT_NAME}
        ${ITK_LIBRARIES}
        ${TBB_IMPORTED_TARGETS}
    )
    

    или

    target_link_libraries( ${CMAKE_PROJECT_NAME}
        ${ITK_LIBRARIES}
        TBB::tbb
    )
    

    Также вы можете обновить find_package, если вам нужен только TBB::tbb компонент в вашем проекте: find_package(TBB REQUIRED tbb)

  • Интеграция исходного кода TBB в ваш проект

    Вы можете использовать tbb_build (это оболочка CMake, использующая GNU Make на файлах сборки TBB), но для запуска ее в Windows под Visual Studio вам потребуется GNU Make в вашей среде.

    Если вы хотите интегрировать этот TBB (с поддержкой CMake) , вы можете использовать add_subdirectory(<YOUR-TBB-ROOT>) (заменить <YOUR-TBB-ROOT> на фактическое местоположение TBB) вместо find_package(TBB REQUIRED).

...