cmake:将库添加到所有目标

zhi*_*fan 6 cmake

这是我可行的 CMakelists.txt。基准库已存在 ,它是按照google benchmark/usr/local/lib/libbenchmark.a中的标准流程构建的

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)
Run Code Online (Sandbox Code Playgroud)

由于我有许多小型基准测试工具要构建,因此我不想调用 target_link_libraries(bar pthread benchmark)每个库。

我只想定义可执行文件。并且可以自动添加pthread和benchmark。

我发现CMAKE_STANDARD_LIBRARIES是为此目的而设计的,但我尝试 CMAKE_STANDARD_LIBRARIESCMAKE_CXX_STANDARD_LIBRARIES多种格式,但没有一个有效。

在这种情况下我犯了什么错误?我的CMake版本是3.5.1。

Tsy*_*rev 10

您可以使用link_libraries命令。其效果与 类似target_link_libraries,但适用于调用后创建的所有目标。

link_libraries(pthread benchmark)

add_executable(foo foo.cpp)
add_executable(bar bar.cpp)
Run Code Online (Sandbox Code Playgroud)