我正在尝试构建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
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
发布于 2020-02-26 23:45:16
我来这里寻找一个复制粘贴解决方案,但我没有看到任何明确的解决方案,而我看到有很多人在看这个页面,所以这是我做的。
我还没有使用过ExternalProject_Add,但如果您能给我一个完整的运行测试示例,我将很乐意为您提供帮助,我可以查看它。
这是我在我的项目中使用的
include(FetchContent)
FetchContent_Declare(googlebenchmark
GIT_REPOSITORY https://github.com/google/benchmark
)
FetchContent_MakeAvailable(googlebenchmark)
target_link_libraries(bench benchmark::benchmark)我还没有在windows上尝试过,但下次在家中启动进入win时我会这样做的。不过,我在几台linux机器上尝试了一下。
我希望它能帮上忙。
发布于 2020-11-16 14:18:49
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
发布于 2020-07-24 04:01:14
在寻找Visual Studio 2019的工作解决方案后,我最终让它工作了。我创建了一个example来帮助别人。
https://stackoverflow.com/questions/55376111
复制相似问题