include_libraries только для одной цели - PullRequest
1 голос
/ 07 июля 2011

В проекте со многими множественными целями я хочу добавить включаемые библиотеки только для определенной цели. Я не хочу замедлять компиляцию, добавляя много включаемых библиотек во все проекты, и я хочу, чтобы, если я не указывал требуемую библиотеку в качестве зависимости от исполняемого файла, она не будет выполнена во время компиляции, а не только в ссылке время.

Есть ли способ сделать это в CMake? Что-то вроде target_link_libraries, но только для включаемых каталогов?

1 Ответ

1 голос
/ 07 июля 2011

Прежде всего, я не стал бы беспокоиться о возможном увеличении времени компиляции, потому что вы добавили много include-каталогов.Конечно, вы должны проверить, действительно ли это проблема.

Вы можете попытаться указать свойство COMPILE_FLAGS непосредственно в исходных файлах, но это, скорее всего, не кросс-платформенное и требуетбыть сделано для каждого исходного файла.

В качестве альтернативы, рассмотрите возможность разделения вашего проекта на подкаталоги и напишите отдельный файл CMakeLists.txt для каждого подкаталога.В этом случае вызов include_directories () ограничен областью действия текущего проекта (и его подпроектов), и у вас будет более детальный контроль над каждым проектом.

Может возникнуть проблема с требованием сбояво время компиляции: например, при использовании статических библиотек A, в зависимости от B, в зависимости от C: когда кто-то связывает exe / dll с A, требуются библиотеки B и C, но это не обязательно обнаруживается во время компиляции ...и трудно решить вообще с CMake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...