makefile - 编译tbb项目时出现cmake命令问题
问题描述
我尝试使用演示在我的项目中编译 tbb。演示链接https://www.selectiveintellect.net/blog/2016/7/29/using-cmake-to-add-third-party-libraries-to-your-project-1
对我来说 IDE 是 VS2013 并收到有关命令“make”的错误
Performing build step for 'tbb44'
2> CMake Error at F:/CPPs/FAsT-Match-master/build/tbb44/src/tbb44-stamp/tbb44-build-Debug.cmake:49 (message):
2> Command failed: 2
2>
2> 'make' 'tbb_build_prefix=tbb44'
原始命令是通过 tbb.cmake 生成的,它看起来像
ExternalProject_Add(${TBB_PREFIX}
PREFIX ${TBB_PREFIX}
URL ${TBB_URL}
URL_MD5 ${TBB_URL_MD5}
CONFIGURE_COMMAND ""
# BUILD_COMMAND ${TBB_MAKE} -j${NCPU} tbb_build_prefix=${TBB_PREFIX}
BUILD_COMMAND ${TBB_MAKE} tbb_build_prefix=${TBB_PREFIX}
注释的是原文,后面的是修改的。这是MSVC的问题吗?
解决方案
那篇博文是完全错误的。TBB 现在带有自己的 CMake 构建,因此绝对没有理由像这样通过 ExternalProject。
这是我使用 Visual Studio 2019 从源代码构建它的方式(说明应该几乎相同)。在开发人员命令提示符下,使用 CMake 3.20:
D:\>git clone https://github.com/oneapi-src/oneTBB
D:\>cmake -S oneTBB -B oneTBB-build -DTBB_TEST=OFF
D:\>cmake --build oneTBB-build --config Release
D:\>cmake --build oneTBB-build --config Debug
D:\>cmake --install oneTBB-build --prefix oneTBB-install --config Release
D:\>cmake --install oneTBB-build --prefix oneTBB-install --config Debug
设置TBB_TEST
为OFF
可以节省大量等待 TBB 测试构建的时间。这些命令将 Debug 和 Release 二进制文件安装到D:\oneTBB-install
. 当然,您可以将此文件夹放在您喜欢的任何位置。
完成此操作后,您可以使用项目中的新 TBB 构建,如下所示:
cmake_minimum_required(VERSION 3.20)
project(TBB-test)
find_package(TBB REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main PRIVATE TBB::tbb)
该TBB
软件包还包括库TBB::tbbmalloc
和TBB::tbbmalloc_proxy
.
构建项目时,您可以通过以下方式在命令行find_package
中将 CMake 变量设置为指向您的 TBB 安装:TBB_ROOT
D:/oneTBB-install
D:\>cmake -S myProject -B myProject-build -DTBB_ROOT=D:/oneTBB-install
推荐阅读
- haskell - 在字符串理解中将数字更改为整数
- r - 在 R Studio 中可视化自定义调色板
- assembly - GAS aarch64 语法获取 .ascii 字符串长度
- django - 如何创建视图类在 django 视图中包含所有功能
- javascript - 使用 jQuery 更新动态加载图像的 SRC 属性
- arrays - 将预处理器宏分配给数组成员时如何避免“预期表达式”错误
- php - laravel 中的 where 子句用于搜索
- javascript - getTheme() 本机基础类型
- python - sys.stdout 只创建一个空文件
- mysql - 如何将 Docker MySQL 映像连接到现有的 Rails 应用程序?