Например, LibA имеет api/interface.h и include/internal.h. LibB необходимо скомпилировать внутренний.h, и я также хочу, чтобы интерфейс.h находился в интерфейсе LibB, чтобы приложение могло также использовать интерфейс.h, только добавив LibB.
Правда, сейчас я создаю LibA как статическую библиотеку, взаимодействующую со всем в каталоге api/ и дополнительно устанавливающим файлы из include/.
Код: Выделить всё
add_library(LibA STATIC ${SOURCE_FILES})
set_target_properties(LibA
PROPERTIES
PUBLIC_HEADER "${PUBLIC_HEADER_FILES}"
)
target_include_directories(LibA
PUBLIC
$
$
PRIVATE
$
$
)
if(NOT BUILD_TESTS)
install(TARGETS ${LOCAL_PROJECT_NAME}
EXPORT ${LOCAL_PROJECT_NAME}Targets
LIBRARY DESTINATION lib/$
ARCHIVE DESTINATION lib/$
RUNTIME DESTINATION bin/$
PUBLIC_HEADER DESTINATION api
)
install(DIRECTORY "include/" DESTINATION include)
Код: Выделить всё
set(LibA-DIR path)
find_package(LibA REQUIRED)
get_target_property(LibA_PATH LibA IMPORTED_LOCATION_${CMAKE_BUILD_TYPE_UPPER})
get_target_property(LibA_INCLUDE_DIRS LibA INTERFACE_INCLUDE_DIRECTORIES)
add_library(LibB SHARED ${SOURCE_FILES})
#add_library(LibB STATIC ${SOURCE_FILES})
target_include_directories(LibB
PUBLIC
$
$
PRIVATE
$
$
)
target_link_libraries(LibB
PRIVATE
LibA
)
if(NOT BUILD_TESTS)
install(TARGETS LibB
EXPORT LibBTargets
LIBRARY DESTINATION lib/$
ARCHIVE DESTINATION lib/$
RUNTIME DESTINATION bin/$
PUBLIC_HEADER DESTINATION api
)
install(DIRECTORY ${LibA_INCLUDE_DIRS}/ DESTINATION api)
Код: Выделить всё
set(LibB_DIR path)
find_package(LibB REQUIRED)
target_link_libraries(APP PRIVATE
LibB
)
Я хочу добиться того, чтобы LibB имела доступ к включаемым файлам LibA и передавала файлы API LibA.
Если LibA собирается статически вместе с LibB, нужно ли приложению только LibB.lib?>
Подробнее здесь: https://stackoverflow.com/questions/798 ... n-in-cmake
Мобильная версия