cmake: добавить библиотеку ко всем целям - PullRequest
0 голосов
/ 11 мая 2018

Вот мой работающий 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 и тест могут быть добавлены автоматически.

Я обнаружил, что CMAKE_STANDARD_LIBRARIES предназначен для этой цели, но я пытался CMAKE_STANDARD_LIBRARIES и CMAKE_CXX_STANDARD_LIBRARIES во многих форматах, но никто не работает.

какую ошибку я допустил в этом случае? моя версия cmake 3.5.1.

Спасибо

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете использовать команду link_libraries . Его эффект похож на target_link_libraries, но применяется ко всем целям, созданным после вызова.

link_libraries(pthread benchmark)

add_executable(foo foo.cpp)
add_executable(bar bar.cpp)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...