我正在尝试使用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
我来这里是为了寻找复制粘贴解决方案,但是我看到没有很多明确的解决方案,尽管看到很多人在看此页面,所以这就是我所做的。
我还没有使用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机器上都尝试过。
希望对您有帮助。