如何在Windows中使用cmake构建和链接Google基准测试

问题描述 投票:2回答:1

我正在尝试使用CMake构建google基准并将其与我的库一起使用。我设法建立了google-benchmark并使用cmake成功运行了所有测试。不幸的是,我无法使用cmake或cl将其与Windows中的C ++代码正确链接。

我认为问题是google-benchmark会在src文件夹中构建库,即它是在src / Release / benchmark.lib中构建的,如果使用$ {benchmark_LIBRARIES},我现在无法在cmake中指向它,它会寻找库位于src外部的Release文件夹中,因为这是构建所有库的常用位置。而且很难找到可以在Windows中运行的示例。

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

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 
)

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

c++ cmake benchmarking microbenchmark google-benchmark
1个回答
1
投票

我来这里是为了寻找复制粘贴解决方案,但是我看到没有很多明确的解决方案,尽管看到很多人在看此页面,所以这就是我所做的。

我还没有使用ExternalProject_Add,但是如果您向我指出了一个可以运行的完整运行测试示例,我很乐意为您提供帮助。

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

include(FetchContent)
FetchContent_Declare(googlebenchmark
                     GIT_REPOSITORY https://github.com/google/benchmark
        )
FetchContent_MakeAvailable(googlebenchmark)

target_link_libraries(bench benchmark::benchmark)

我还没有在Windows上尝试过,但是下次我下次在家中赢得胜利时,我会做的。我在几台Linux机器上都尝试过。

希望对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.