我在~/usr/local
中拥有googlebenchmark源代码并进行构建cmake -DCMAKE_BUILD_TYPE=Release
内部的整个build
:cd 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.txt
的benchmark
,警告仍然存在。已建议该方法https://stackoverflow.com/questions/34302265/does-cmake-build-type-release-imply-dndebug
包括后
if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
add_definitions(-DNDEBUG)
endif()
插入benchmark
的CMakeLists.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/
中建立了库之后