Google Benchmark:“以调试模式构建的库”

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

我在~/usr/local中拥有googlebenchmark源代码并进行构建cmake -DCMAKE_BUILD_TYPE=Release内部的整个buildcd build; cmake -DCMAKE_BUILD_TYPE=Release; make,然后在我的项目的CMakeLists.txt中,我有以下内容:

set(BENCHMARK_ROOT ~/local/benchmark/build/src)
set(BENCHMARK_INCLUDE_DIR ~/local/benchmark/include)

我希望将库保存在主目录中,如下所示,在此设置下效果很好;我的C++项目可以看到benchmark。但是,警告***WARNING*** Library was built as DEBUG. Timings may be affected.仍然存在,所以我相信README.md并不能说明整个故事。如何解决?我什至尝试cmake -DCMAKE_BUILD_TYPE=Release -DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON ../以便它实际下载googletest并将其存储在third_party内的build目录中。但是,发出make会导致错误:它找不到刚构建的googletest

编辑:我已包括在内

if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
    add_definitions(-DNDEBUG)
endif()

进入CMakeLists.txtbenchmark,警告仍然存在。已建议该方法https://stackoverflow.com/questions/34302265/does-cmake-build-type-release-imply-dndebug

cmake microbenchmark
1个回答
0
投票

包括后

if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
    add_definitions(-DNDEBUG)
endif()

插入benchmarkCMakeLists.txt并重新构建,然后链接我对新建库的可执行文件,瞧,这是一个示例输出:

... {“ type”:“统一的”,“级别”:3,“大小”:25344000,“ num_sharing”:16}],“ load_avg”:[0.4,0.18,0.23],“ library_build_type”:“发布”

因此,有时有必要从源代码安装库,以便将其构建为Release

此外,某人的行为类似于

set(BENCHMARK_ROOT ~/local/benchmark/build/src)
target_link_directories(my_executable PUBLIC ${BENCHMARK_ROOT})

在(以我为例)~/local/nechmark/build/中建立了库之后

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