Библиотеки оболочек без какого-либо дополнительного кода из вашего проекта лучше всего могут быть реализованы с небольшими целевыми библиотеками INTERFACE
с тегом IMPORTED
. Пример для вашего сценария:
add_library(customws INTERFACE IMPORTED)
target_include_directories(customws
INTERFACE
/some/include/path)
target_link_libraries(customws
INTERFACE
websockets)
Таким образом, цели, которые используют эту библиотеку, могут просто
add_executable(user_app user_app.c)
target_link_libraries(user_app customws pthread)
и получить требования к использованию от цели customws
, в данном случае включитькаталог и связанная библиотека (websockets
) распространяются до customws
. Это может быть хорошо, так как может инкапсулировать детали реализации зависимости (различные флаги для разных платформ и т. Д.).
Если вы хотите автоматически ссылаться на скомпилированный код (который является частью вашего проекта),это можно легко сделать, добавив небольшую промежуточную библиотеку OBJECT
, например,
add_libraray(customwsenhanced
OBJECT
someCode.c)
target_link_library(customwsenhanced
PUBLIC
customws)
В зависимости от того, зависит ли someCode.c
от требований использования customws
, target_link_library
для customwsenhanced
можеттакже используйте INTERFACE
распространение. Теперь клиентское приложение может идти с
add_executable(user_app user_app.c)
target_link_libraries(user_app customwsenhanced pthread)
и получит как скомпилированный объектный код someCode.c
, так и флаги и т. Д. От customws
.