Вот фрагмент из make CMakeLists.txt:
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
?