我想构建TBB以在另一个CMake项目中使用它。我尝试使用Github source从makefile构建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项目吗?
答案 0 :(得分:3)
关于CMake相关问题
基本上,您有两个选择:
将预制的TBB二进制文件集成到您的项目中
您可以根据以下binaries of TBB使用example(就像您一样)。调用find_package(TBB REQUIRED)
后,您将获得TBB::<component>
格式的TBB目标(例如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
(它是在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)
。