Вот фрагмент из макияжа CMakeLists.txt:Транзитивные target_include_directories на объектные библиотеки
add_library(foo-object OBJECT src/foo.cpp)
target_include_directories(foo-object PUBLIC include)
add_library(foo SHARED $<TARGET_OBJECTS:${PROJECT_NAME}-object>)
add_library(foo_static STATIC $<TARGET_OBJECTS:${PROJECT_NAME}-object>)
Теперь это все работает отлично, обе библиотеки генерируются. Однако у меня есть проблема, когда я пытаюсь использовать его:
add_executable(bar src/main.cpp)
target_link_libraries(bar foo)
Target bar
не компилируется, поскольку включают в себя каталоги из Foo-объекта не распространяются. Если я добавлю target_include_directories
прямо на foo
, все будет хорошо компилироваться.
Как я могу сделать как foo
, так и foo_static
автоматически использовать (и пересылать вещи в зависимости от них), включая каталоги от foo-object
?
Хорошее название - сложный вопрос легко найти. – CJxD