使用 Visual Studio 2015 x64 和 CMake 构建 TBB
Building TBB using Visual Studio 2015 x64 and CMake
我想构建 TBB 以在另一个 CMake 项目中使用它。我尝试从 Github source using the makefile(使用 VisualStudio 2015 升级)构建 TBB。由于神秘错误而失败:
LINK : fatal error LNK1181: cannot open input file 'opencv_core300.lib'
此错误可能源自何处?
我的第二次尝试是使用另一个 repository 构建 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是从here那里借来的,复制到cmake的modules目录下。
最新版本的binaries of TBB有一个CMake文件夹,里面有TBBConfig.cmake。我用它来 link TBB 到我的项目,但不知何故我以错误告终:"tbb-NOTFOUND.obj cannot be found"。 (这种方式还在研究中
是否有人使用此存储库配置和构建 cmake 项目?
关于CMake相关问题
基本上你有两个选择:
将预构建的 TBB 二进制文件集成到您的项目中
可以使用binaries of TBB (just as you did) according to the following 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
)
如果您的项目中只需要 TBB::tbb
组件,您也可以更新 find_package
:find_package(TBB REQUIRED tbb)
将 TBB 源代码集成到您的项目中
您可以使用 tbb_build
(它是一个在 TBB Makefile 上使用 GNU Make 的 CMake 包装器),但是要在 Visual Studio 下的 Windows 上 运行 它,您将需要在您的环境中安装 GNU Make。
如果您想集成此 TBB (with CMake support),您可以使用 add_subdirectory(<YOUR-TBB-ROOT>)
(将 <YOUR-TBB-ROOT>
替换为 TBB 的实际位置)而不是 find_package(TBB REQUIRED)
。
我想构建 TBB 以在另一个 CMake 项目中使用它。我尝试从 Github source using the makefile(使用 VisualStudio 2015 升级)构建 TBB。由于神秘错误而失败:
LINK : fatal error LNK1181: cannot open input file 'opencv_core300.lib'
此错误可能源自何处?
我的第二次尝试是使用另一个 repository 构建 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是从here那里借来的,复制到cmake的modules目录下。
最新版本的binaries of TBB有一个CMake文件夹,里面有TBBConfig.cmake。我用它来 link TBB 到我的项目,但不知何故我以错误告终:"tbb-NOTFOUND.obj cannot be found"。 (这种方式还在研究中
是否有人使用此存储库配置和构建 cmake 项目?
关于CMake相关问题
基本上你有两个选择:
将预构建的 TBB 二进制文件集成到您的项目中
可以使用binaries of TBB (just as you did) according to the following 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 )
如果您的项目中只需要
TBB::tbb
组件,您也可以更新find_package
:find_package(TBB REQUIRED tbb)
将 TBB 源代码集成到您的项目中
您可以使用
tbb_build
(它是一个在 TBB Makefile 上使用 GNU Make 的 CMake 包装器),但是要在 Visual Studio 下的 Windows 上 运行 它,您将需要在您的环境中安装 GNU Make。如果您想集成此 TBB (with CMake support),您可以使用
add_subdirectory(<YOUR-TBB-ROOT>)
(将<YOUR-TBB-ROOT>
替换为 TBB 的实际位置)而不是find_package(TBB REQUIRED)
。