Что на самом деле делает «заполнение» в документах CMake? - PullRequest
0 голосов
/ 09 июля 2020

Я всегда смущался, когда в документах CMake говорится «заполнить свойство». Например, в

target_include_directories ([SYSTEM] [BEFORE] [items1 ...] [ [items2 ...] ...])

...

PRIVATE и PUBLI C элементы будут заполнить свойство INCLUDE_DIRECTORIES для .

Я не уверен, что чем заполнить свойство INCLUDE_DIRECTORIES? Например, target_include_directories(A PUBLIC B), означает ли здесь 'заполнить INCLUDE_DIRECTORIES' копирование свойства INCLUDE_DIRECTORIES B в свойство INCLUDE_DIRECTORIES A?

1 Ответ

1 голос
/ 09 июля 2020
Элементы

PRIVATE и PUBLI C будут заполнять свойство INCLUDE_DIRECTORIES для .

Примерно так:

set(mode "PRIVATE") # or PUBLIC, from target_include_directories arguments

# Get interface include directories
target_get_proprety(incdirs B INTERFACE_INCLUDE_DIRECTORIES)

if(mode STREQUAL "PUBLIC" OR mode STREQUAL "PRIVATE")
    set_properties(TARGET A APPEND PROPERTY INCLUDE_DIRECTORIES ${incdirs})
endif()

# when mode is PUBLIC or INTERFACE, they get also added to A's INTERFACE_INCLUDE_DIRECTORIES

Я думаю, слово " populate"можно заменить на" append"без потери смысла.

Я не уверен, что чем заполнить свойство 'INCLUDE_DIRECTORIES'?

С содержимым INTERFACE_INCLUDE_DIRECTORIES от другой цели.

Например, target_include_directories (A PUBLI C B) заполняет INCLUDE_DIRECTORIES 'здесь означает копирование свойства INCLUDE_DIRECTORIES B в свойство INCLUDE_DIRECTORIES A?

Означает добавление INTERFACE_INCLUDE_DIRECTORIES B к INCLUDE_DIRECTORIES и к INTERFACE_INCLUDE_DIRECTORIES.

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