使用Visual Studio 2015 x64和CMake构建TBB

Building TBB using Visual Studio 2015 x64 and CMake

本文关键字:CMake 构建 TBB x64 Visual Studio 2015 使用      更新时间:2023-10-16

我想构建TBB,以便在另一个CMake项目中使用它。我尝试使用makefile(使用VisualStudio2015升级)从Github源代码构建TBB。这是由于一个神秘的错误而失败的:

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

这个错误可能来自哪里?

我的第二次尝试是使用另一个存储库构建TBB,该存储库允许使用CMake进行构建。此生成生成一个tbb.lib、tbb.dll等文件。现在我被困在如何将is合并到我的其他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的modules目录中。

最新版本的TBB二进制文件有一个CMake文件夹,里面有TBBConfig.CMake。我用它将TBB链接到我的项目,但不知何故,我最终出现了一个错误:"找不到TBB-NOTFOUND.obj"。(这种方式仍在调查中。

是否有人使用此存储库来配置和构建cmake项目?

关于CMake相关问题

基本上你有两个选择:

  • 将预先构建的TBB二进制文件集成到您的项目中

    您可以根据以下示例使用TBB的二进制文件(就像您所做的那样)。调用find_package(TBB REQUIRED)后,您将获得格式为TBB::<component>的TBB目标(例如TBB::tbbTBB::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
    )
    

    如果你的项目中只需要TBB::tbb组件,你也可以更新你的find_packagefind_package(TBB REQUIRED tbb)

  • 将TBB源代码集成到您的项目中

    您可以使用tbb_build(它是一个在TBB Makefiles上使用GNU Make的CMake包装器),但要在Visual Studio下的Windows上运行它,您需要在您的环境中使用GNU Maker。

    如果您想集成此TBB(具有CMake支持),可以使用add_subdirectory(<YOUR-TBB-ROOT>)(用TBB的实际位置替换<YOUR-TBB-ROOT>)而不是find_package(TBB REQUIRED)