У меня есть библиотека только для заголовков, для которой я хочу написать файл CMake, который будет использоваться в других проектах. Для этого мне нужно объявить библиотеку целью интерфейса. Затем файлы заголовков добавляются файлами CMakeList.txt во вложенные папки.
Теперь я хочу получить список исходных файлов для запуска на них формата clang. Но get_target_property
не работает на интерфейсных целях. Есть ли способ извлечь источники (или заголовки) из цели интерфейса?
Это код, который у меня есть на данный момент (не работает)
make_minimum_required(VERSION 3.12)
project(foo
LANGUAGES CXX
VERSION 1.0.0)
add_library(bar INTERFACE)
# add header files in sub folders with
target_sources(bar INTERFACE
"${CMAKE_CURRENT_SOURCE_DIR}/header.h"
)
# this gives the error
get_target_property(MY_SOURCES bar SOURCES)
Сообщение об ошибке
INTERFACE_LIBRARY targets may only have whitelisted properties. The
property "SOURCES" is not allowed.
Я попытался связать цель интерфейса с реальнымцели и получить источники таким образом, но я только добавил источники непосредственно ко второй цели, а не источники из интерфейса интерфейса