Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Visual Studio 2015 x64和CMake构建TBB_C++_Cmake_Tbb - Fatal编程技术网

C++ 使用Visual Studio 2015 x64和CMake构建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

我想建立TBB在另一个CMake项目中使用它。我尝试使用(使用VisualStudio 2015升级)从构建TBB。由于一个神秘的错误,此操作失败:

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_IMPORTED_targets
    变量将包含所有导入的TBB目标

    因此,您需要稍微修改
    目标链接库

    target_link_libraries( ${CMAKE_PROJECT_NAME}
        ${ITK_LIBRARIES}
        ${TBB_IMPORTED_TARGETS}
    )
    

    如果项目中只需要
    TBB::TBB
    组件,您还可以更新
    find_包
    find_包(需要TBB)

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

    您可以使用
    tbb_build
    (它是在tbb makefile上使用GNU Make的CMake包装器),但要在visualstudio下的Windows上运行它,您需要在您的环境中使用GNU Make

    如果您想集成此功能,可以使用
    添加子目录()
    (用TBB的实际位置替换
    ),而不是
    查找包(需要TBB)


关于CMake相关问题

基本上你有两个选择:

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

    您可以根据以下内容使用(就像您所做的那样)。调用
    find_包(TBB REQUIRED)
    后,您将以
    TBB::
    的格式获得TBB目标(例如
    TBB::TBB
    TBB::tbbmalloc
    等)。此外
    TBB_IMPORTED_targets
    变量将包含所有导入的TBB目标

    因此,您需要稍微修改
    目标链接库

    target_link_libraries( ${CMAKE_PROJECT_NAME}
        ${ITK_LIBRARIES}
        ${TBB_IMPORTED_TARGETS}
    )
    

    如果项目中只需要
    TBB::TBB
    组件,您还可以更新
    find_包
    find_包(需要TBB)

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

    您可以使用
    tbb_build
    (它是在tbb makefile上使用GNU Make的CMake包装器),但要在visualstudio下的Windows上运行它,您需要在您的环境中使用GNU Make

    如果您想集成此功能,可以使用
    添加子目录()
    (用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位。你设置了吗e> TBBROOTenvironment变量以指向TBB项目的build文件夹?请注意,在配置时,使用
CMake
通常使用不同的文件夹进行构建,而不是源文件。
if(DEFINED ENV{TBBROOT})
您在ENV之前缺少一个$,它应该是:
if(DEFINED$ENV{TBBROOT})
我检查了两次:没有创建TBBConfig.cmake文件。