У меня есть два проекта, оба из которых используют CMake. Теперь я хочу включить один из проектов в виде библиотеки внутри другого, сохраняя при этом возможность компилировать их как отдельные проекты.
Что я сделал до сих пор: используйте систему контроля версий для клонирования копии дочернего проекта в подкаталог родительского проекта. Я использовал add_subdirectory, чтобы включить CMakeLists.txt дочернего проекта в родительский проект. И я исправил конфликт имен между целями, переименовав некоторые цели в дочернем проекте.
Однако проблема, с которой я сталкиваюсь, заключается в том, что различные тесты конфигурации в дочернем проекте, похоже, не выполняются. Например, дочерний проект использует модуль FindThreads, чтобы определить, какие примитивы синхронизации доступны. Родительский проект не знает о проблемах с многопоточностью и поэтому не имеет тестов, связанных с этим. Аналогично, дочерний проект имеет различные тесты для заголовков и такие, которые не нужны родительскому проекту. Похоже, что ни один из этих тестов не выполняется, а символы, определенные в этих тестах, не добавляются в файл CMakeCache.txt.
Я действительно не хочу включать все тесты дочернего проекта (которые в основном касаются специфичных для платформы проблем, не относящихся к родителю) в CMakeLists.txt родительского проекта.