У меня есть проект библиотеки C++, который поставляется с папкой examples
. Примеры являются автономными, то есть они могут быть скомпилированы без остальной части исходного дерева, как если бы они были реальными приложениями, использующими библиотеку. Они используют предоставленный FindMyLib.cmake
, чтобы найти установленную библиотеку в системе.Можно ли связать проект cmake с подпроектами?
Я хотел бы также иметь возможность построить их вместе со всей библиотекой. Сначала я добавил их в подкаталоги:
if(MYLIB_BUILD_EXAMPLES)
add_subdirectory(examples/fooexample)
add_subdirectory(examples/barexample)
endif()
Но это не будет работать, потому что я не могу использовать find_package
перед установкой библиотеки. Я могу добавить каталог по умолчанию в путь поиска, но этого недостаточно, потому что библиотека еще не построена, пока выполняется cmake (очевидно).
Что делать, чтобы решить эту проблему? Есть ли способ прозрачно связывать библиотеку с этими подпроектами при ее создании (а также «отключить» find_package, поскольку она обязательно завершится без установки).
Если я не пропустил что-то, это не будет работать: шаг конфигурации примеров приведет к ошибке, потому что библиотека не будет построена еще, – piwi
Если библиотека добавляется (с 'add_library (MyLib)') * before * 'add_subdirectory (examples/...)', тогда 'target_link_libraries (fooexample $ {MyLib_LIBRARY})' работает как обычная связь с ** target **. На этом этапе не требуется создание целевой библиотеки. – Tsyvarev
Мой плохой, спасибо за разъяснение. – piwi