Как поделиться свойствами по нескольким целям в CMake? - PullRequest
0 голосов
/ 03 октября 2018

Я немного опаздываю в игре "Modern Cmake" и пытаюсь наверстать упущенное.Один из вопросов после прочтения парадигмы, ориентированной на целевые объекты, заключается в том, как совместно использовать свойства (включая параметры компиляции, определения и т. Д.) Для нескольких целей?

Более конкретно, мой проект просто включает несколько библиотек и несколько исполняемых файлов в качестве целей.Они в значительной степени используют одни и те же функции, языковые функции и т. Д. Нужно ли повторять это для каждой цели?или для остальных достаточно одной цели?или любые другие альтернативные способы?ТИА.

1 Ответ

0 голосов
/ 03 октября 2018

Если есть зависимости между целями, то target_include_libraries и другие команды target_ позаботятся о распространении свойств, если вы используете видимость PUBLIC:

add_library(foo ...)
target_include_directories(foo PUBLIC foo_includes)

add_executable(bar ...)
# foo_includes propagate to bar.
target_link_libraries(bar foo)

Если между целями нет отношения зависимости, вы можете поделиться опцией через переменные CMake:

set(my_includes ...)

add_library(foo ...)
target_include_directories(foo PUBLIC ${my_includes})

add_library(bar ...)
target_include_directories(bar PUBLIC ${my_includes})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...