2015-06-13 4 views
2

Позвольте мне описать то, что, по моему мнению, является достаточно распространенным прецедентом, что его нужно поддерживать. Рассмотрим проект, который состоит из библиотеки и набора исполняемых файлов, которые используют эту библиотеку. Прямым подходом является add_library, за которым следует последовательность пар add_executable() target_link_lib().связать библиотеку со всеми объектами в проекте cmake

Это много кодировочного кода. Было бы неплохо сделать что-то вроде set (PROJECT_LINK_LIBS, lib1 ...) и удалить cmake из дополнительного шаблона.

Думая об этом больше, я понимаю, что мне нужна функция link_libraries, которая ведет себя аналогично include_directories. Я бы сказал, что это:

  1. Было бы полезно во многих случаях.
  2. Приведёт к сушке CMakeLists.
  3. Будет поощрять лучшие организации кода - будет естественный стимул для организации папок, кода и исполняемых файлов таким образом, чтобы все исполняемые файлы имели одинаковые зависимости - безусловно, чистую практику.

Есть ли что-нибудь подобное?

+2

Нет ничего встроенного, которое удаляет это. Однако вы можете разработать свои собственные макросы и функции cmake, чтобы удалить часть шаблона. – drescherjm

ответ

1

Похоже, что существует переменная CMAKE_STANDARD_LIBRARIES, где вы можете добавлять библиотеки в соответствии с вашими потребностями. Однако эта переменная, по-видимому, ожидает полного пути к библиотекам.

См. here.