首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在windows中使用cmake构建和链接google基准测试

如何在windows中使用cmake构建和链接google基准测试
EN

Stack Overflow用户
提问于 2019-03-27 19:28:36
回答 5查看 4K关注 0票数 7

我正在尝试构建google-benchmark,并使用cmake将其与我的库一起使用。我已经设法构建了google-benchmark,并使用cmake成功地运行了它的所有测试。不幸的是,我无法使用cmake或cl将其与windows中的c++代码正确链接。

我认为问题是google-benchmark在src文件夹中构建了库,也就是说,它是在src/ Release /benchmark.lib中构建的,如果我使用${benchmark_LIBRARIES},它会在src外的Release文件夹中查找该库,因为这是构建所有库的通常位置。而且很难找到在windows中工作的示例。

下面是我尝试过的两种方法,这两种方法都可以构建库并运行所有测试,但我无法将库指向正确的target_link_library

代码语言:javascript
复制
include(ExternalProject)
ExternalProject_Add(googlebenchmark
  GIT_REPOSITORY    https://github.com/google/benchmark.git
  GIT_TAG           master
  SOURCE_DIR        "${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-src"
  BINARY_DIR        "${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-build"
  CONFIGURE_COMMAND ${CMAKE_COMMAND} -B ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-build -S ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-src -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON
  BUILD_COMMAND     ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-build --config Release 
  INSTALL_COMMAND   ""
  TEST_COMMAND      ${CMAKE_CTEST_COMMAND} ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-src ${CMAKE_CURRENT_BINARY_DIR}/googlebenchmark-build --build-config Release 
)

代码语言:javascript
复制
ExternalProject_Add(googlebenchmark
  GIT_REPOSITORY    https://github.com/google/benchmark.git
  GIT_TAG           master 
  PREFIX            googlebenchmark
  CMAKE_ARGS        -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON
  BUILD_COMMAND     ${CMAKE_COMMAND} --build . --config Release
  INSTALL_COMMAND   ""
  TEST_COMMAND      ${CMAKE_CTEST_COMMAND} --build-config Release
)

在此之后如何将其链接到我的c++文件try.cpp

EN

回答 5

Stack Overflow用户

发布于 2020-02-26 23:45:16

我来这里寻找一个复制粘贴解决方案,但我没有看到任何明确的解决方案,而我看到有很多人在看这个页面,所以这是我做的。

我还没有使用过ExternalProject_Add,但如果您能给我一个完整的运行测试示例,我将很乐意为您提供帮助,我可以查看它。

这是我在我的项目中使用的

代码语言:javascript
复制
include(FetchContent)
FetchContent_Declare(googlebenchmark
                     GIT_REPOSITORY https://github.com/google/benchmark
        )
FetchContent_MakeAvailable(googlebenchmark)

target_link_libraries(bench benchmark::benchmark)

我还没有在windows上尝试过,但下次在家中启动进入win时我会这样做的。不过,我在几台linux机器上尝试了一下。

我希望它能帮上忙。

票数 4
EN

Stack Overflow用户

发布于 2020-11-16 14:18:49

CMakeLists.txt如下所示

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.14)
project(g_benchmark)
enable_testing()

include(FetchContent)

## Project-wide setup
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_EXTENSIONS NO)

# Externally provided libraries
FetchContent_Declare(googletest
        GIT_REPOSITORY https://github.com/google/googletest.git
        GIT_TAG v1.10.x)

FetchContent_Declare(googlebenchmark
        GIT_REPOSITORY https://github.com/google/benchmark.git
        GIT_TAG master) # need master for benchmark::benchmark

FetchContent_MakeAvailable(
        googletest
        googlebenchmark)

add_executable(g_benchmark main.cpp)
target_link_libraries(g_benchmark benchmark::benchmark)

要求cmake版本高于3.14

$ cmake。

$ cmake --build。

参考:https://github.com/hohaidang/CPP_Basic2Advance/tree/master/Learning/CMake/g_benchmark

票数 4
EN

Stack Overflow用户

发布于 2020-07-24 04:01:14

在寻找Visual Studio 2019的工作解决方案后,我最终让它工作了。我创建了一个example来帮助别人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55376111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档