cmake:将库添加到所有目标

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

这是我可行的 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.

cmake
1个回答
10
投票

您可以使用 link_libraries 命令。其效果与

target_link_libraries
类似,但适用于调用后创建的所有目标。

link_libraries(pthread benchmark)

add_executable(foo foo.cpp)
add_executable(bar bar.cpp)
© www.soinside.com 2019 - 2024. All rights reserved.