C++ 使用Visual Studio 2015 x64和CMake构建TBB
我想建立TBB在另一个CMake项目中使用它。我尝试使用(使用VisualStudio 2015升级)从构建TBB。由于一个神秘的错误,此操作失败:C++ 使用Visual Studio 2015 x64和CMake构建TBB,c++,cmake,tbb,C++,Cmake,Tbb,我想建立TBB在另一个CMake项目中使用它。我尝试使用(使用VisualStudio 2015升级)从构建TBB。由于一个神秘的错误,此操作失败: LINK:致命错误LNK1181:无法打开输入文件“opencv\u core300.lib” 此错误可能来自何处 我的第二次尝试是使用另一个允许使用CMake构建的TBB。此生成生成一个tbb.lib、tbb.dll等文件。 现在我被困在如何在我的其他cmake文件中合并。不存在TBBConfig.cmake或类似文件。 我的项目的CMakeLi
LINK:致命错误LNK1181:无法打开输入文件“opencv\u core300.lib”
此错误可能来自何处
我的第二次尝试是使用另一个允许使用CMake构建的TBB。此生成生成一个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的modules目录中借来的,并复制到该目录中
最新版本的有一个内有TBBConfig.CMake的CMake文件夹。我用它将TBB链接到我的项目,但不知怎的,我最终出现了一个错误:“TBB-NOTFOUND.obj找不到”。(这条路仍在调查中
是否有人使用此存储库配置和构建cmake项目?关于cmake相关问题 基本上你有两个选择:
- 将预构建的TBB二进制文件集成到项目中
您可以根据以下内容使用(就像您所做的那样)。调用
后,您将以find_包(TBB REQUIRED)
的格式获得TBB目标(例如TBB::
,TBB::TBB
等)。此外TBB::tbbmalloc
变量将包含所有导入的TBB目标 因此,您需要稍微修改TBB_IMPORTED_targets
:目标链接库
或 如果项目中只需要target_link_libraries( ${CMAKE_PROJECT_NAME} ${ITK_LIBRARIES} ${TBB_IMPORTED_TARGETS} )
组件,您还可以更新TBB::TBB
,find_包
find_包(需要TBB)
- 将TBB源代码集成到项目中
您可以使用
(它是在tbb makefile上使用GNU Make的CMake包装器),但要在visualstudio下的Windows上运行它,您需要在您的环境中使用GNU Make 如果您想集成此功能,可以使用tbb_build
(用TBB的实际位置替换添加子目录()
),而不是查找包(需要TBB)
- 将预构建的TBB二进制文件集成到项目中
您可以根据以下内容使用(就像您所做的那样)。调用
后,您将以find_包(TBB REQUIRED)
的格式获得TBB目标(例如TBB::
,TBB::TBB
等)。此外TBB::tbbmalloc
变量将包含所有导入的TBB目标 因此,您需要稍微修改TBB_IMPORTED_targets
:目标链接库
或 如果项目中只需要target_link_libraries( ${CMAKE_PROJECT_NAME} ${ITK_LIBRARIES} ${TBB_IMPORTED_TARGETS} )
组件,您还可以更新TBB::TBB
,find_包
find_包(需要TBB)
- 将TBB源代码集成到项目中
您可以使用
(它是在tbb makefile上使用GNU Make的CMake包装器),但要在visualstudio下的Windows上运行它,您需要在您的环境中使用GNU Make 如果您想集成此功能,可以使用tbb_build
(用TBB的实际位置替换添加子目录()
),而不是查找包(需要TBB)
CMake
构建,它应该在构建树中生成TBBConfig.CMake
。此错误可能来自何处?在生成文件所期望的路径中没有opencv库,或者可能混合了32位和64位。是否将TBBROOT
环境变量设置为指向构建TBB项目的d文件夹?请注意,在配置时,使用CMake
通常使用不同的文件夹进行构建,而不是源文件。if(DEFINED ENV{TBBROOT})
在ENV之前缺少一个$,它应该是:if(DEFINED$ENV{TBBROOT})
我检查了两次:没有创建TBBConfig.cmake文件。如果它使用cmake
构建,它应该在构建树中生成TBBConfig.cmake
。这个错误可能来自何处?你没有在生成文件所期望的路径中创建opencv库,或者可能是混合了32位和64位。你设置了CMake
通常使用不同的文件夹进行构建,而不是源文件。if(DEFINED ENV{TBBROOT})
您在ENV之前缺少一个$,它应该是:if(DEFINED$ENV{TBBROOT})
我检查了两次:没有创建TBBConfig.cmake文件。