使用Visual Studio 2015 x64和CMake构建TBB

时间:2019-01-08 15:14:39

标签: c++ cmake tbb

我想构建TBB以在另一个CMake项目中使用它。我尝试使用Github sourcemakefile构建TBB(已随Visual Studio 2015升级)。由于出现神秘错误,此操作失败:

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

此错误可能源于何处?

我的第二个尝试是使用另一个repository构建TBB,该{BB}允许使用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是从here借来的,并复制到cmake的modules目录中。

binaries of TBB的最新版本包含一个带有TBBConfig.cmake的CMake文件夹。我使用此链接将TBB链接到我的项目,但是以某种方式我最终遇到一个错误,指出:“找不到tbb-NOTFOUND.obj”。 (这种方式仍在调查中。

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

1 个答案:

答案 0 :(得分:3)

关于CMake相关问题

基本上,您有两个选择:

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

    您可以根据以下binaries of TBB使用example(就像您一样)。调用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
    )
    

    如果您只需要在项目中使用find_package组件,也可以更新TBB::tbbfind_package(TBB REQUIRED tbb)

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

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

    如果您想集成此TBB (with CMake support),则可以使用add_subdirectory(<YOUR-TBB-ROOT>)(将<YOUR-TBB-ROOT>替换为TBB的实际位置)代替find_package(TBB REQUIRED)

    < / li>