CMake:将库添加到所有目标

6

以下是我可用的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。

谢谢

1个回答

10

您可以使用link_libraries命令。它的作用类似于target_link_libraries,但是应用于调用之后创建的所有目标。

link_libraries(pthread benchmark)

add_executable(foo foo.cpp)
add_executable(bar bar.cpp)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接