我正在尝试构建Google基准,并使用cmake将其与我的库一起使用。我已经成功建立了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
答案 0 :(得分:2)
我来这里是为了寻找复制粘贴解决方案,但是我看不到任何明确的解决方案,尽管看到很多人在看此页面,所以这就是我所做的。
我还没有使用过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机器上都尝试过。
我希望这会有所帮助。
答案 1 :(得分:1)
CMakeLists.txt如下
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
答案 2 :(得分:0)
在寻找适用于Visual Studio 2019的可行解决方案后,我最终使它正常工作。我创建了example来帮助他人。
答案 3 :(得分:0)
你可以简单地这样做:
cmake_minimum_required(VERSION 3.16)
project(googletest-download NONE)
include(ExternalProject)
ExternalProject_Add(googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG master
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-src"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)
如果您使用 Clion,请重新加载 cmake 项目并运行构建