这是我可行的 CMakelists.txt。基准库位于
/usr/local/lib/libbenchmark.a
,它是按照google benchmark中的标准流程构建的
cmake_minimum_required(VERSION 3.5.1)
project(tiny_benchmark)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED on)
set(CMAKE_CXX_EXTENSIONS off)
set(CMAKE_EXPORT_COMPILE_COMMANDS on)
# set(CMAKE_STANDARD_LIBRARIES ${CMAKE_STANDARD_LIBRARIES} pthread benchmark /usr/local/lib/benchmark.a)
# set(CMAKE_STANDARD_LIBRARIES ${CMAKE_STANDARD_LIBRARIES} pthread)
add_executable(foo foo.cpp)
add_executable(bar bar.cpp)
target_link_libraries(foo pthread benchmark)
target_link_libraries(bar pthread benchmark)
因为我有很多小型基准测试工具要构建,所以我不想为每个库调用
target_link_libraries(bar pthread benchmark)
。
我只想定义可执行文件。并且可以自动添加 pthread 和 benchmark。
我发现
CMAKE_STANDARD_LIBRARIES
是为此目的而设计的,但我尝试过
CMAKE_STANDARD_LIBRARIES
和 CMAKE_CXX_STANDARD_LIBRARIES
有多种格式,但没有一个有效。
在这种情况下我犯了什么错误?我的 CMake 版本是 3.5.1.
您可以使用 link_libraries 命令。其效果与
target_link_libraries
类似,但适用于调用后创建的所有目标。
link_libraries(pthread benchmark)
add_executable(foo foo.cpp)
add_executable(bar bar.cpp)